正则表达式和 PHP - 如何与非强制性参数匹配



我正在使用这个正则表达式:

s*((w*.*s*)+[.*(w)]+(?=d{4}))(d{4}s*,)*

目标是将单词与最后一个以点结尾的单词匹配,后面的单词以逗号结尾的 4 位数字。

这是一个测试.2014,

而且它工作正常。现在,我想添加在"test."和"2014"之间有一个空格(\s)的可能性,但空格不是强制性参数,如果有的话应该匹配。

你能帮我如何把它添加到我的正则表达式中吗?我们如何设置非强制性参数?

谢谢。

试试这个模式

s*((w*.*s*)+[.*(w)]+s*(?=d{4}))(d{4}s*,)*

s*存在零个或多个时间空间。我在日期模式之前添加了它

或尝试:

s*((w*.*s*)+[.*(w)]+(?=s*d{4}))(s*d{4}s*,)*

有几种方法可以做到这一点。可以使用问号、星号,也可以指定可行匹配项的范围,如下表所示。

Regular Expressions Quantifiers
*   0 or more
+   1 or more
?   0 or 1
{3} Exactly 3
{3,}    3 or more
{3,5}   3, 4 or 5
s*((w*.*s*)+[.*(w)]+(s+)(?=d{4}))(d{4}s*,)*
s*((w*.*s*)+[.*(w)]+(s*)(?=d{4}))(d{4}s*,)*
s*((w*.*s*)+[.*(w)]+s{0,1}(?=d{4}))(d{4}s*,)*

目标是将单词与最后一个以点结尾的单词匹配, 以逗号结尾的 4 位数字的跟纸

(?:s*w+)*s*w+.d{4},

现在,我想添加空格(\s)的可能性 在"test."和"2014"之间,但空格不是强制性的 参数

(?:s*w+)*s*w+.s*d{4},

试试这个

/s*((w*.*s*)+[.*(w)]+(s*)(?=d{4}))(d{4}s*,)*/

最新更新