用于按随机顺序匹配强制和可选字符的正则表达式

问题描述 投票:0回答:1

我需要一个正则表达式,通过Visual Studio搜索引擎(可能是C#)在HTML元素之间查找Text。

什么在某种程度上正常工作是这样的:

>\s*([\w])+\s*<

但它必须匹配以下所有“asdf”:

<element>asdf
  <element>asdf.</element>asdf
  <element />
asdf asdf
</element>
<element>
  asdf!
</element>

它不应该找到的是两个标签之间的空白区域,此示例应与NOTHING匹配:

<element>

  <element>  </element>
</element>

我特别需要的是正则表达式,匹配:

  • 从>开始
  • 以<结尾
  • 在至少一个单词字符(\ w)之间是强制性的
  • 一堆特殊字符是必需的(_。?,!SPACE)是可选的
  • 在开始/结束和内容之间可能存在不可预测的空白长度(意味着它也可以是零长度)
  • 开始和结束之间的字符顺序绝对是随机的

我不想在没有\ w的情况下获得包含特殊字符的匹配。

另一个根本不起作用的是:

>\s*((?=[\w]+)(?=[ ?=()!"_]*))\s*<

满足我需求的正确方法是什么?

非常感谢!

regex random
1个回答
1
投票

在匹配><s之间的文本之前,您可以使用一个前瞻:

>(?=[^<]*\w).*?<

(使用“s”标志,所以dot匹配换行符 - 或者,使用像[\S\s]*?而不是.*?这样的东西)

前瞻确保><之间有一个单词字符。然后,匹配并懒惰重复任何角色,直到你到达<

https://regex101.com/r/cqinyh/2

© www.soinside.com 2019 - 2024. All rights reserved.