我有一个正则表达式模式,在大约50%的情况下捕获我想要的东西,我发现它与它不匹配的情况与字符串中的空格有关。这是使用javascript Regex BTW。
REGEX PATTERN:
/\[url="https?:\/\/([a-z0-9-]+\.)*cnn\.com\/newsreel\/showreel\.php\?id=?([^\s]*[^.])?\"\]([^\s]*[^.])\[\/url\]/gi
与之匹配的字符串
A)[url="http://www.cnn.com/newsreel/showreel.php?id=977976"]Test123[/url]
B)[url="http://www.cnn.com/newsreel/showreel.php?id=977976"]Test 1 2 3[/url]
现在,如果我尝试在A上运行此模式,它可以正常工作。但是在B上,它失败了,因为所有的空间。
我认为这与我的第三个匹配组([^\s]*[^.])
有关,我想这不会占用空间。任何人都有任何想法,我怎么能得到它匹配空间?
谢谢!
答案 0 :(得分:0)
从
更改第3个匹配组([^\s]*[^.])
到
(.*[^.])
即,用[^\s]*
(零个或多个字符)替换.*
(零个或多个非空格字符)。
请注意,这也将允许其他空格字符,例如制表符和可能的换行符,具体取决于正则表达式的使用方式。如果这太松散,您可以选择[\S ]*
(零个或多个非空格或常规空格字符)。