gpt4 book ai didi

java - 正则表达式 - 否定类中的组

转载 作者:行者123 更新时间:2023-12-02 07:46:07 25 4
gpt4 key购买 nike

我使用 Java 的匹配器通过以下正则表达式对字符串中的术语进行分组:

Pattern.compile("(\\\\\"[^\\\\\"]*\\\\\"|[^\\s\\\\\"]+)");

这是我遇到问题的部分:[^\s\\\"]

我希望它只匹配非空格和悬空转义引号,例如\"。有没有办法将\\和\"分组到字符类中,以便它们只匹配在一起?

我尝试使用lookahead/lookbehind,但发现将其包含在字符类中会让我回到第一个位置。

最佳答案

字符类匹配单个字符。如果我理解正确的话,您只想匹配字符串 \" 。为此,您根本不需要字符类 - 正则表达式 \\"已经匹配了! (在 Java 字符串中,它看起来像 \\\\\",这很荒谬,但你已经看到了。)

您可以使用括号将内容分组在一起:(\\\\\") 。您还可以使用|在这样的组内交替。 。因此要匹配非空格 \" ,你可以这样做:(\S|\\\\\") 。 (请注意 \S[^\s] 相同。)

编辑:我没有给予足够的关注。您可以匹配除 \" 之外的所有内容或空格如下: (\\\\(?!")|[^\s\\]) ,我想。

这个怎么样:([^\\s\\\\]|\\\\(?!")) 。这应该匹配除空格或 \ 之外的任何内容。 \后面没有 " .

关于java - 正则表达式 - 否定类中的组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10825584/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com