我在Java计算器程序中使用以下正则表达式来标记输入:
((?<=[(^+/*-])|(?=[(^+/*-]))
我以前使用过此正则表达式(请注意,插入符号已移至末尾):
((?<=[(+/*-^])|(?=[(+/*-^]))
这会引起问题,因为多位数字输入将被分割成单个字符。即“ 11”将拆分为“ 1”,“ 1”。
我知道插入记号是字符类前面的特殊字符,但是为什么当放置在末尾时它会导致正则表达式无法正常工作?
在中[(+/*-^]
,*-^
将范围内的字符匹配*
到^
,这就是您的问题。
但是,当你写的[(^+/*-]
,它的比赛之一(
,^
,+
,/
,*
或-
。
更清晰的例子:
[12a-z]
将匹配1
,2
或之间的字符a
和z
[12az-]
比赛1
,2
,a
,z
或者-
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句