【问题标题】:Can someone help me understand what this regex is doing?有人可以帮我理解这个正则表达式在做什么吗?
【发布时间】:2019-08-09 20:50:11
【问题描述】:

有人可以分解这个正则表达式匹配的内容吗?

Regex.Match("<a>", "^<([a-zA-Z][a-zA-Z0-9]*)( [^>]*)?>$")

【问题讨论】:

  • Regex101 是了解特定正则表达式在做什么的好工具。
  • 感谢您的建议!

标签: .net regex vb.net


【解决方案1】:

给你,解释和格式化

 ^                             # The beginning of the string BOS
 <                             # A literal '<'
 (                             # (1 start), Capture group 1
      [a-zA-Z]                      # Start with a letter
      [a-zA-Z0-9]*                  # 0 or more letter or number
 )                             # (1 end)
 (                             # (2 start) Optional Capture group 2
      [^>]*                         # 0 or more, non '>' character
 )?                            # (2 end)
 >                             # A literal '>'
 $                             # The end of the string EOS

一个忠告,这个结构有它的位置([^&gt;]*)?
但应该写成([^&gt;]*?)

【讨论】:

  • [^&gt;]*前面有个空格,所以( [^&gt;]*)?不能替换成([^&gt;]*?)
  • @Toto - 错过了那个空格,但[^&gt;] 匹配了一个空格。但我不认为他实际上需要一个空间才能匹配,因为它是可选的。但是,也许……但我对此表示怀疑。应该是笔误!!
  • 当后面有另一个字符时,空格是强制性的,他们想要一个空格和一些(0个或更多)非&gt;或什么都没有。 OP 匹配 &lt;tag attr="blah"&gt; 但你的匹配 &lt;tagattr="blah"&gt;
  • @Toto - 任何删除可能的 null ^&lt;([a-zA-Z][a-zA-Z0-9]*)(?=[ ]|&gt;)([^&gt;]*?)&gt;$ 匹配 &lt;tag attr="blah"&gt;&lt;tag &gt;&lt;tag&gt; 但不匹配 &lt;tagattr="blah"&gt;
  • @Toto - 如果是关于 html 解析,我会建议使用 &lt;[\w:]+(?=\s|/?&gt;)((?:"[\S\s]*?"|'[\S\s]*?'|[^&gt;]?)+)&gt;
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-03-28
  • 1970-01-01
  • 2012-04-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多