簡體   English   中英

用正則表達式提取重復模式

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM