簡體   English   中英

匹配字符串前后字符的條件

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

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