[英]extracting recurring pattern with regular expressions
我有一些文本,其中寫有(id(以Pnumber形式),短划線和名稱)的列表。 像:
P1 - code23
P2 - name asd, P3 -name3
P3 - 837/55 P5 - code/55
如你所見,情侶PX - 名稱可以用\\ n,逗號或簡單空格分隔。
使用正則表達式
(((?<id>P\d)(\s)?-(\s)?(?<name>(.)*)(,)?(\n)?))
我可以提取在不同行上重復的匹配名稱組,但不能提取除以或空格的名稱組。 從上面的文字中提取的名字是
code23 (right)
name asd, P3 -name3 (wrong)
837/55 P5 - code/55 (wrong)
我該如何修改我的模式?
你可以試試
(?<id>P\d+)\s*-\s*(?<name>.*?)(?=$|,?\s*P\d)
請參閱正則表達式演示 ( \\r?
僅在演示中添加,因為多行模式已打開且輸入為多行,如果字符串是單獨處理的,則不需要\\r?
和多行模式)。
說明 :
(?<id>P\\d+)
- 組ID, P
+ 1+位 \\s*-\\s*
- 0+空格, -
以及0 +空格 (?<name>.*?)
- 組NAME捕獲除換行符之外的0+個字符,直到第一個字符 (?=$|,?\\s*P\\d)
- 字符串結尾(是的,唯一的)或可選的逗號,0 +空格, P
和數字。 結果:
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.