[英]high-level regular expression with not
嗨,正则表达式专家,
我有以下文字
<[~UNKNOWN:a-z\.]> <[~UNKNOWN:A-Z\-0-9]> <[~UNKNOWN:A-Z\]a-z]
和以下reg expr
\[\~[^\[\~\]]*\]
它适用于文本中的第一组和第二组,但不适用于第三组。
第一组是
[~UNKNOWN:a-z\.]
第二个是
[~UNKNOWN:A-Z\-0-9]
第三个是
[~UNKNOWN:A-Z\]a-z]
但是,reg exp发现以下文本
[~UNKNOWN:A-Z\]
我理解原因,并且知道必须在reg exp中添加以下规则:
以'['和'〜'字符开头,以']'结尾,除非']'前面有'\\'。 所以我应该添加一个NOT表达式,但不确定如何。
有人可以帮忙吗?
谢谢,
V.
这应该工作(第一行模式,第二行您的模式(忽略空格),第三行我的更改):
\[\~(?:[^\[\~\]]|(?<=\\)\])*(?<!\\)\]
\[\~ [^\[\~\]] * \]
(?: |(?<=\\)\]) (?<!\\)
您的正则表达式:
\[\~ # Literal characters [~
[^ # Character group, NONE of the following:
\[\~\] # [ or ~ or ]
]* # 0 or more of this character group
\] # Followed by ]
您的语言模式: [~
,介于两者之间,直到下一个]
,只要其中没有[
或~
或]
。
我的模式,只有相关的更改说明了:
\[\~
(?: # Non capturing group
[^\[\~\]]
| # OR
(?<=\\)\] # ], preceded by \
)*
(?<!\\)\] # ], not preceded by \
换句话说:与您的字母相同,如果在\\
前面加上]
可能包含在内,而在]
的结尾不包含\\
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.