我整天都在正常表达中挣扎,无法找到解决方案 . 我试图在包含数字,分号,冒号和空格的字符串中找到一些特定的数字 .
为了我们的目的,让's say I' m寻找号码 1234
以下是几个应匹配的示例( Every line is a different string ):
1234
;1234;
1234 : 5678
;1234,3321
和不匹配的例子(因为它的数字不同):
;12345;
0123456
我目前的尝试:
[^(0-9*)]1234[^(0-9*)]
以下是Regex Tester与我的问题的永久链接:Regex Tester fiddle
3 回答
也许试试这个:
([^0-9]|^)1234([^0-9]|$)
在这种情况下,您不需要环视功能 .您可以使用它来更好地理解regexp . 它有一个很好的gui可视化模式 . Debuggex
如果你的味道支持lookahead and lookbehind,请使用:
对没有匹配的字符出现进行环视测试 . 负面观察仅在没有出现时接受 .
如果它支持word boundaries:
词边界包括例如 . 空格和标点符号 .
否则检查非数字字符并添加字符串开始和结束:
如果您的引擎甚至不支持
\d
和\D
,请将它们替换为[0-9]
各自[^0-9]
.这可能有效:
这个怎么运作:
字符串以“1234”开头或结尾并且没有其他字符可能存在问题 . 根据正则表达式的实现,可能不需要正面和背面的任何匹配 .