我对正则表达式有疑问。我的目标是每当号码落后于这些字符时就获取号码:
因此,您可以看到,有6倍的情况下有一个空白,而有一个案例(第6个)没有匹配的空白。
我正在尝试为案例4和6创建一个正则表达式。到目前为止,这是我的正则表达式:
/[T](?:\ )?\d+/
或者这也是我到目前为止得到的另一个解决方案:
/([T](?:\ )|([GHSW]|(T26))\ )?\d+/
但是,我没有得到数字,我也得到了字符T。我如何只获得数字,有什么简单的解决方案让一个正则表达式匹配所有字符而不是创建6 regex if语句..?
示例输入:
您好,我叫G 25是Alfred。我H 26正在测试新的正则表达式S2和S 5 这是我的T3测试T 4正则表达式文本。我的T26 2和T265是新的W2 还有W 4。
我想要的(输出):
致以问候,谢谢!
答案 0 :(得分:2)
此正则表达式应该执行您想要的操作。它寻找
之一[GHSW]
后跟一个空格,或T26
后跟一个空格,或T
后跟一个可选空格和一些数字,它们在第1组中捕获:
(?:[GHSW]\s|T26\s|T(?!26)\s?)(\d+)
如果您只想捕获比赛中的数字并且您的正则表达式风格支持后向,则可以改用以下方法:
(?<=[GHSW]\s|T26\s|T(?!26) |T(?!26))\d+
请注意,我们必须同时为T
指定一个空格和一个空格,以确保后面的内容是固定宽度。