【问题标题】:Regex match every dot正则表达式匹配每个点
【发布时间】:2018-08-04 10:27:24
【问题描述】:

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

【问题讨论】:

  • 你能提供一个字符串的例子和你想匹配的部分吗?
  • 味道? C#? JavaScript?
  • 先把文字拉出来再匹配。您无法使用正则表达式解析 HTML:stackoverflow.com/a/1732454/8492116

标签: regex


【解决方案1】:

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

如果您不想匹配 href 中的点,可以将其与 href=" 匹配,后跟 [^"]*"'[^']*'。然后,您可以使用交替 | 使用 ([.,]) 捕获一组点或逗号

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

【讨论】:

【解决方案2】:

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

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

建议你使用https://regex101.com/之类的工具来测试和调试你的正则表达式,超级好用!

【讨论】:

  • 这不是一个好方法。它只是 can't work 甚至在正则表达式测试器页面上。
猜你喜欢
  • 2022-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多