簡體   English   中英

兩個字符之間的正則表達式 - 在許多相同的字符之間匹配

[英]Regex between two characters - Matched between many same characters

我有一個字符串

[ 14.21 | | Pobiedziska Letnisko 2 11.16 | 1 ]

我需要第二個“|”之間的值字符和數字“2”或“1” 在此處輸入圖像描述 只有這部分字符串沒有“|” 字符和沒有數字。 我正在嘗試這種模式

(?<=\|).+?(?=(1|2))

但是正如你所看到的,這種模式並不好,因為匹配從第一個字符“|”開始我需要從第二個“|”開始特點。

您可以使用在第二個 pipe 字符匹配之后開始的捕獲組,直到第一次出現 1 或 2。

請注意.+? 還可以搭配| 所以它會越過| 如果 1 或 2 在右側的 pipe 字符之后。

^[^|]*\|[^|]*\|(.+?)\b[21]\b

正則表達式演示

如果您不想跨越換行符或 pipe 字符,您可以擴展否定字符 class 像^[^|\r\n]*

另一個使用環視的選項,如您的問題中的否定字符 class不跨越 pipe 字符:

(?<=^[^|]*\|[^|]*\|)[^|]+(?=\b[21]\b)
  • (?<=^[^|]*\|[^|]*\|)在當前 position 左側斷言 2 個 pipe 字符
  • [^|]+匹配除|之外的任何字符
  • (?=\b[21]\b)正向前瞻,向右斷言 2 或 1

.NET 正則表達式演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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