java仅用一个字替换所有非数字字符
我想做下一个替换:
WORD1234->;W1234
所以,我使用正则表达式:
([^\d]*)([0-9]+)([^\d]*)
替换:W$2
如果单词是WORD1234AAAAA,使用前面的正则表达式,我得到了相同的结果:W1234,这就是我想要的
但是如果单词是WO12RD34
,我得到的结果是:W12W34
在所有情况下,我基本上都希望删除所有非数字字符,并在开头添加字母W
更新:
输入字符串并不总是以^{ABC12DE34
,期望的结果是:FA1234
。也就是说,删除所有非数字字符,并在开头添加一个单词
# 1 楼答案
试试这个:
使用这个正则表达式,只有在匹配第一个字符时,才会设置“开始”捕获组。否则,它将是空的
这个想法是,当字符串的开头跟W匹配时,命名的“开始”模式将被初始化为^W。然后,只需将^W替换为自身即可
否则,当匹配任何非数字字符时,将不会设置开始模式(且为空)。然后,也将非数字字符替换为零