[英]Match string conditional on character before and after
正則表達式總讓我頭疼。 我正在嘗試匹配一個模式,只有在前后兩個字符都不是數字的情況下才會匹配。 沒關系,如果其中一個字符是數字。
即字符串“Zeitraum vom 1. 6. -30.6。” 我試圖匹配短划線( - ),但是模式不應該匹配“12-3-2019”(短划線之前和之后的兩個字符都是數字)。
目前我正在嘗試排除,但如果兩個字符都不是數字,那似乎匹配。
[^\d]-[^\d]
謝謝
你可以用
r'-(?<!\d-(?=\d))'
請參閱正則表達式演示
它匹配a -
前面沒有數字和-
后面緊跟一個數字。
請注意, (?=\\d)
前瞻是必需的而不是簡單的\\d
因為(?<!\\d-\\d)
之后-
在回溯時能夠使匹配失敗。
細節
-
- 連字符 (?<!
- 負面觀察的開始:如果在當前位置的左側立即出現,則失敗
\\d
- 一個數字 -
- 連字符 (?=\\d)
- 后跟\\d
)
- 看后面的結束 您可以使用替換:
(?<!\d)-|-(?!\d)
這匹配的連字符前面沒有數字或后面沒有數字
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.