我正在写一个java应用程序,我试图用正则表达式将一个字符串中的标记彼此分离。正则表达式应该将符号(+ - / * =和任何类型的方括号)与字母和数字等其他内容分隔开,但是我想添加一个例外,如果这些符号碰巧位于字符串文字中的引号之间,则不会将它们分隔开
下面是我目前拥有的正则表达式:([a-zA-Z0-9"]+|[\(\)\[\]\+\-\*\/\{\}=])
这个模式给了我不同的匹配,我把每个匹配作为一个单独的标记处理。
如果我在这个示例字符串上使用这个:"SomeStr=123"(something)
(包括引号)我得到的是这些令牌:["SomeStr, =, 123", (, something, )]
我想得到的是["SomeStr=123", (, something, )]
模式应该只分离符号,如果他们之间的引号(与事实,引号不会总是直接后面/前面的符号)是有一种方法,我可以在正则表达式做到这一点?
仅供参考,我试图这样做是为了教育目的,也许使用正则表达式不是最好的方法?
1条答案
按热度按时间tez616oj1#
你可以编写一个正则表达式,在匹配符号和单词之前,先匹配引号作为第一个替代:
RegEx Demo
RegEx详情:
\"[^\"]*\"
:匹配引用的文本|
:或[-()\[\]+*/{}=]
:匹配给定的符号|
:或\w+
:匹配1+单词字符如果要允许转义引号,则用途:
RegEx Demo 2