regex - 用于以随机顺序匹配强制和可选字符的正则表达式
问题描述
我需要一个正则表达式来通过 Visual Studion 搜索引擎(可能通过 C#)在 HTML 元素之间查找文本。
在某种程度上可以正常工作的是:
>\s*([\w])+\s*<
但它必须匹配以下所有“asdf”:
<element>asdf
<element>asdf.</element>asdf
<element />
asdf asdf
</element>
<element>
asdf!
</element>
它不应该找到两个标签之间的空格,这个例子应该匹配NOTHING:
<element>
<element> </element>
</element>
我特别需要的是一个正则表达式,它匹配:
- 开始 >
- 以 < 结尾
- 在这些之间至少有一个单词字符 (\w) 是强制性的
- 一堆特殊字符是强制性的(_ . ? , ! SPACE)是可选的
- 在开始/结束和内容之间可能存在不可预测的空白长度(意味着它的长度也可以为零)
- start 和 end 之间的字符顺序是绝对随机的
我不想得到包含不带 \w 的特殊字符的匹配项。
另一个根本不起作用的是:
>\s*((?=[\w]+)(?=[ ?=()!"_]*))\s*<
满足我需求的正确方法是什么?
太感谢了!
解决方案
您可以在匹配 s 之间的文本之前使用一次前瞻><
:
>(?=[^<]*\w).*?<
(使用“s”标志,所以点匹配换行符 - 或者,使用类似的东西[\S\s]*?
代替.*?
)
前瞻确保在>
和之间有一个单词字符<
。然后,匹配并延迟重复任何字符,直到到达<
.
推荐阅读
- mongodb - 如何按每小时对数据进行分组
- font-awesome - 在具有不同图标样式的 Openlayers 中使用 Fontawesome
- python - 一维数组到RGB图像?
- android - android中按钮上的java.lang.NullPointerException
- java - 在 maven 中使用/导入本地 fat jar 作为插件
- reactjs - 如何通过浅层安装 React 功能组件对反应钩子进行单元测试?
- angular - 如何在角度单元测试中模拟组件中的 store.pipe
- xml - 如何使用 XSLT 2.0 将 csv 文件转换为结构化 XML 文件?
- css - 如何在 Windows 上将 docker nginx 与 express 和 react 应用程序连接起来
- c# - 在 IDbCommandTreeInterceptor (EF 6.4) 中访问查询参数