我有一個字串
[ 14.21 | | Pobiedziska Letnisko 2 11.16 | 1 ]
我需要第二個“|”之間的值 字符和數字 "2" 或 "1"
只有這部分字串沒有 "|" 字符而沒有數字。我正在嘗試這種模式
(?<=\|). ?(?=(1|2))
但是正如你所看到的,這種模式并不好,因為匹配以第一個字符“|”開始 我需要從第二個“|”開始 特點。
uj5u.com熱心網友回復:
您可以在第二個管道字符匹配之后使用捕獲組,直到第一次出現 1 或 2。
請注意,如果 1 或 2 在右側的管道字符之后,它. ?也可以匹配,|因此它會交叉|。
^[^|]*\|[^|]*\|(. ?)\b[21]\b
正則運算式演示
如果您不想跨越換行符或管道字符,您可以擴展否定字符類,如 ^[^|\r\n]*
在您的問題中使用環視的另一種選擇,其中否定字符類不跨越管道字符:
(?<=^[^|]*\|[^|]*\|)[^|] (?=\b[21]\b)
(?<=^[^|]*\|[^|]*\|)在當前位置的左側斷言 2 個管道字符[^|]匹配任何字符,除了|(?=\b[21]\b)正向前瞻,向右斷言 2 或 1
.NET 正則運算式演示
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/371594.html
