繁体   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