没有高级正则表达式

时间:2017-05-04 15:10:39

标签: java regex

正则表达专家,

我有以下文字

<[~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表达式但不确定如何。

有人可以帮忙吗?

谢谢,

2 个答案:

答案 0 :(得分:1)

为什么不简单:

<([^>]+)>?

enter image description here

Regex Demo

答案 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 \ ,则可以包含],并且结尾\可能不会以]开头