正则表达专家,
我有以下文字
<[~UNKNOWN:a-z\.]> <[~UNKNOWN:A-Z\-0-9]> <[~UNKNOWN:A-Z\]a-z]
以下reg expr
\[\~[^\[\~\]]*\]
它适用于文本中的第1组和第2组,但不适用于第3组。
第一组是
[~UNKNOWN:a-z\.]
第二个是
[~UNKNOWN:A-Z\-0-9]
,第三个是
[~UNKNOWN:A-Z\]a-z]
然而,reg exp找到以下文本
[~UNKNOWN:A-Z\]
我理解为什么,我知道我必须在reg exp中添加以下规则:
以&#39; [&#39;和&#39;〜&#39;字符以&#39;]&#39;结尾除非有一个&#39; \&#39;在&#39;]前面。所以我应该添加一个NOT表达式但不确定如何。
有人可以帮忙吗?
谢谢,
诉
答案 0 :(得分:1)
答案 1 :(得分:0)
这应该有用(第一行模式,第二行你的模式(忽略空格),第三行我的更改):
\[\~(?:[^\[\~\]]|(?<=\\)\])*(?<!\\)\]
\[\~ [^\[\~\]] * \]
(?: |(?<=\\)\]) (?<!\\)
你的正则表达式:
\[\~ # Literal characters [~
[^ # Character group, NONE of the following:
\[\~\] # [ or ~ or ]
]* # 0 or more of this character group
\] # Followed by ]
您的字样:[~
,介于两者之间的所有内容,直至下一个]
,只要没有[
或~
或{{1}在那里。
我的模式,只解释了相关的变化:
]
单词:与您的相同,如果前面有\[\~
(?: # Non capturing group
[^\[\~\]]
| # OR
(?<=\\)\] # ], preceded by \
)*
(?<!\\)\] # ], not preceded by \
,则可以包含]
,并且结尾\
可能不会以]
开头