gpt4 book ai didi

java - 在 Java 中使用 Scanner.useDelimeter() 来隔离表达式中的标记

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:29:41 26 4
gpt4 key购买 nike

我试图分离单词、括号和 =><=>来自以下输入:

(<=>A B) OR (C AND D) AND(A AND C)

到目前为止,我只分离了单词(参见 Scanner#useDelimeter() ):

sc.useDelimeter("[^a-zA-Z]");

使用时:

sc.useDelimeter("[\\s+a-zA-Z]");

我得到的只是括号的输出。

我不想要但想要AND ) .

我该怎么做?做\\s+给出相同的结果。

此外,定界符与正则表达式有何不同?我熟悉 PHP 中的正则表达式。使用的符号是否相同?

我想要的输出:

(
<=>
A
(and so on)

最佳答案

您需要一个可以为零宽度的定界正则表达式(因为您有相邻项),因此环视是唯一的选择。试试这个:

sc.useDelimeter("((?<=[()>])\\s*)|(\\s*\\b\\s*)");

这个正则表达式表示“在括号之后或大于号或在单词边界处,丢弃空格”


另请注意,字符类 [\\s+a-zA-Z] 包括 + 字符 - 大多数字符在字符内部时会失去任何特殊的正则表达式含义类(class)。您似乎想说“一个或多个空格”,但这不是您的做法。

关于java - 在 Java 中使用 Scanner.useDelimeter() 来隔离表达式中的标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15992447/

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