对于正则表达式大师来说,可能真的很简单:) 我是正则表达式的菜鸟,刚刚学习了一些 PHP,但想学习(一旦这个项目完成,我将全力以赴并破解正则表达式)。
我想了解如何编写可能包含一些数据但必须包含其他数据的正则表达式。
我的例子是,匹配可以以数字开头但不必以数字开头,但是如果确实如此,我需要数字和以下 2 个单词。如果它不以数字开头,只需前 2 个单词。数据将位于字符串的开头。
以下将匹配:
谢谢
最佳答案
这样的事情应该工作:^((?:\d+\s)?\w+(?:\s\w+)?)
你可以在类似 http://rubular.com/ 的地方测试它在编码之前,它通常更容易。
这是什么意思:
^ -> 行首(?:\d+\s)?
-> 一个非捕获组,(用 ?: 标记),由几个数字和一个空格组成,因为我们后面跟着 ?
,它是可选的。\w+(?:\s\w+)?
-> 几个字母数字字符(查找\w 的含义),然后是可选的空格和另一个“单词”,再次位于非捕获组中。
整个事情都封装在一个捕获组中,因此组 1 将包含您的匹配项。
关于regex - Noob regex poser(匹配可能包含并且必须有),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13048307/