正则表达式匹配每个点

时间:2018-08-04 10:27:25

标签: regex

我想匹配每个点或逗号,但不匹配href属性。所以我有这个正则表达式: ^(?!.*?href=)(.*?)([.,])(\S+) 但是它只匹配第一次出现。我认为是因为.*?的非贪婪性,但我无能为力。你能帮我吗?

2 个答案:

答案 0 :(得分:-1)

如果要匹配每个匹配项,则需要使用全局(g)标志运行正则表达式: 例如

/^(?!.*?href=)(.*?)([.,])(\S+)/g

我建议您使用https://regex101.com/之类的工具来测试和调试正则表达式,这非常方便!

答案 1 :(得分:-1)

要匹配每个点或逗号并假设属性值在单引号或双引号之间,您可能要进行匹配以匹配不需要的内容并在组中捕获要保留的内容。

如果您不想匹配href中的点,则可以将其与href="和后跟[^"]*"'[^']*'进行匹配。然后,您可以使用|

使用交替([.,])来捕获点或逗号。

href=(?:"[^"]*"|'[^']*')|([.,])