捕获可选组正则表达式 Php
Capturing optional groups regex expressions Php
我几乎有了完整的正则表达式,但是,有一种情况我无法匹配。
我需要捕获:xxxx 字(如果存在)、小数 (30) 和 'cm'。
我有这样的表达:
30x30cm
30 x 30 厘米
30x30 厘米
xxxx 30x30cm
xxxx (30x30cm) -> 那个案例不匹配单词xxxx(如果存在我需要捕获)
xxxx (30 x 30 cm)->那个盒子不匹配单词xxxx(如果存在我需要捕获)
这就是我现在的正则表达式:
(?:(\w+))?\s?\b(\d+)\s?x\s?(\d+)\s?(cm)\b
如果xxxx存在的话,如何匹配?任何帮助将不胜感激
您可以向第一个可选的非捕获组添加可选的白色space和一个(
:
(?:(\w+)\s*\(?)?\b(\d+)\s?x\s?(\d+)\s?(cm)\b
^^^^^^
请参阅 regex demo(\s
替换为 space,因为输入字符串是多行字符串)。
\s*\(?
匹配 0+ 白色 space 后跟一个可选的 (
.
我几乎有了完整的正则表达式,但是,有一种情况我无法匹配。
我需要捕获:xxxx 字(如果存在)、小数 (30) 和 'cm'。
我有这样的表达:
30x30cm
30 x 30 厘米
30x30 厘米
xxxx 30x30cm
xxxx (30x30cm) -> 那个案例不匹配单词xxxx(如果存在我需要捕获)
xxxx (30 x 30 cm)->那个盒子不匹配单词xxxx(如果存在我需要捕获)
这就是我现在的正则表达式:
(?:(\w+))?\s?\b(\d+)\s?x\s?(\d+)\s?(cm)\b
如果xxxx存在的话,如何匹配?任何帮助将不胜感激
您可以向第一个可选的非捕获组添加可选的白色space和一个(
:
(?:(\w+)\s*\(?)?\b(\d+)\s?x\s?(\d+)\s?(cm)\b
^^^^^^
请参阅 regex demo(\s
替换为 space,因为输入字符串是多行字符串)。
\s*\(?
匹配 0+ 白色 space 后跟一个可选的 (
.