regex - 正则表达式
问题描述
我需要一个正则表达式来选择不包含的元素@href
<test abc="xyz_CHCFGRc/abc_CHmnop" href="sdddzus.xml">text</test>
<test abc="abc_abc>text23</test>
<test abc="123_ABCc/abc_CHmnoph">text42</test>
我写的正则表达式:
<test\s+abc.[^href]*>.*
这个表达式的问题是 href 被认为是一个单独的字母,如果 abc 包含这些字母中的任何一个,它就不会被选中。
结果应该是:
<test abc="abc_abc>text23</test>
<test abc="123_ABCc/abc_CHmnoph">text42</test>
但就我而言,结果是
<test abc="abc_abc>text23</test>
提前致谢
解决方案
首先,您应该为此使用 XML 解析器:为什么用正则表达式解析 XML 是个坏主意?. 但是,如果您必须使用常规表达式,则解决方案如下:
尝试<test(?!.+href).+
说明:
<test
<test
-从字面上匹配
(?!.+href)
- 否定前瞻:断言后面的内容不是:.+
- 一个或多个任意字符和href
,即断言后面的内容不包含href
单词
.+
- 匹配 noe 或更多任何字符
您关于否定字符类的想法是错误的:[^href]
否定h
, r
,e
并且f
单独地,它不会href
作为一个词否定。
推荐阅读
- azure-pipelines - 无法覆盖 Azure 管道运行变量
- javascript - 如何使位置粘在屏幕上
- import - Sqoop 导入所有表不适用于特定架构,同时将所有表从 SQL 服务器导入 Hive
- android - 等待另一种方法,直到协程完成 [Android Kotlin]
- angular - 角材料复选框过滤器不过滤垫表。终端和控制台中没有错误
- python - 为什么pySmartDL(Python下载管理器)成功后不断重试?
- javascript - 三个带webpack的js
- html - 加载大数据时Kendo Telerik 报告非常慢(性能差),并出现0 页加载到目前为止的消息
- swift - 如何使用 SwiftUI App Cycle 在 SwiftUI 项目中实现 AdMob Open Ad?
- javascript - javascript和java的super关键字的区别