7

我想匹配以下任何一个字符:<><=>==

这个似乎不起作用:[/</=/>]

4

3 回答 3

11

尝试这个:

[<>]=?|=

它匹配<>可选地后跟=,或仅=其自身。

于 2013-07-05T19:11:57.480 回答
3

您不需要转义字符类中的任何这些字符。除此之外,您需要使用量词来匹配这些字符的 1 个以上重复。

你需要这个:

[<>=]{1,2}

注意量词,以匹配 2 次重复,根据<=和的要求>=


另外,请注意,这也将匹配 - ==, <<。如果你只想匹配这 4 个字符串,你可以使用这个正则表达式:

[<>]=?|=

使用?after=使其成为可选的。因此,第一部分将匹配 - <><=>=。然后我们=使用管道添加。

于 2013-07-05T19:08:36.133 回答
2

我不确定您为什么要使用斜杠(可能有一些我不知道的冷融合,如果需要,请将它们添加回来)...您的正则表达式当前仅匹配一个字符。尝试:

[<=>]{1,2}

如果您希望一个正则表达式仅匹配>, <, >=, <=and =,那么会有更多内容。Coldfusion 中的 REMatch() 函数将在数组中返回所有匹配的结果,因此以一种或另一种方式指定分隔符或边界很重要,因为它就像findall在 python 中或preg_match_allPHP 中(或标记全局匹配)。

我认为最简单的边界是\b

\b(?:[<>]=?|=)\b

g这是一个激活的演示

如果没有这些界限,就会发生这种情况

编辑:没有意识到空间的一些事情。也许可以解决这个问题?

\b\s*(?:[<>]=?|=)\s*\b
于 2013-07-05T19:08:49.040 回答