我正在尝试匹配以下字符串:
÷7%3@x#2$+÷5%3@x#2$-4
具有以下匹配项:
string = string.replaceAll("÷(.+)%(.+)@x#([0-9]+)\\$","÷$1x#$3\\$%$2@");
从上面的调用中,我看到:$1 = (.+) and $2 = (.+) and $3 = ([0-9]+)
在调用replaceAll之后:字符串已更改为:
÷7%3@x#4$+÷5x#2$%3@-4
注意,该正则表达式仅应用于÷5%3@x#2$
,而不应用于÷7%3@x#2$
我需要正则表达式来匹配整个表达式。
正则表达式可能有什么问题?
答案 0 :(得分:0)
我要发布此答案,这是关于要完成的工作的有效方法。 不是解决问题的最优雅的方法,但是它可以工作。
在我的回答中,我使用Pattern和Matcher类对每次出现的正则表达式进行范围划分,然后将它们替换为Pattern和Matcher找到它们中的每一个。
Pattern pattern = Pattern.compile("÷.+?%.+?@x#\\d+\\$");
Matcher matchk = patternk.matcher(string);
while(matchk.find()){
String string1 = matchk.group();
String string2 = string1;
string2 = string2.replaceAll("÷(.+)%(.+)@x#(\\d+)\\$","÷$1x#$3\\$%$2@");
string = string.replace(string1,string2);}
结果是我想要获取的格式化字符串。