我有一个正则表达式的问题,似乎没有按照我想要的方式解决。
以下是(不同的)输入字符串的两个示例:
当然,由于不了解正则表达式的最佳知识,我不能因为不同的原因而得到文本的大胆部分。以下是我这样做的例子:
preg_match("/_([^0-9])x([^0-9])_/", $input_line, $output_array);
当然,这不起作用。我想要的预期输出是:
答案 0 :(得分:1)
你几乎得到了它。只需添加重复内容即可删除^
:
/_([0-9]+)x([0-9]+)_/
字符集中的 ^
使得该集匹配任何但内部的内容。 Aka [^0-9]
会匹配任何不是数字的东西。
字符集本身也只匹配一个字符。 Aka [0-9]
只匹配一位数。 +
表示匹配1次或更多次。
<小时/> 如果要从匹配中删除下划线,可以使用positive lookahead and lookbehind。这将使正则表达式只是验证它们在那里,而不是将它们包括在匹配中:
/(?<=_)([0-9]+)x([0-9]+)(?=_)/