Dan*_*lan 3 java regex non-greedy
我认为这应该回归"州,国家",但它正在回归"国家"
System.out.println("city,state,country".replaceAll("(.*,)?", ""));
Run Code Online (Sandbox Code Playgroud)
为什么它以这种方式工作,如何让它返回"州,国家".我希望这个答案是一个正则表达式.
Psh*_*emo 12
.*成为非贪婪你需要添加?之后*.replaceAll 将替换所有出现的匹配部分,因此您应该使用 replaceFirst 尝试
System.out.println("city,state,country".replaceFirst(".*?,", ""));
Run Code Online (Sandbox Code Playgroud)
输出:
state,country
Run Code Online (Sandbox Code Playgroud)
如果你不能使用replaceFirst并且需要留下来,replaceAll那么@Reimeus的回答可能正是你要找的.
顾名思义,replaceAll替换所有匹配的组.您需要更具体地匹配组的位置.要指定第一个匹配组,您可以指定String ^锚点的起点:
"city,state,country".replaceAll("^(.*?,)", "")
Run Code Online (Sandbox Code Playgroud)