Java用于替换特定字符串的正则表达式
问题描述:
如果字符串超过3位(电话号码应该被替换),我想替换字符串中的数字,并且如果数字后面跟有$,它不应该替换数字小数点。我用下面的表达式。Java用于替换特定字符串的正则表达式
“\ d {3} +(?!\ $/\。)”
问题我面对的是,它正在取代,因为我希望替换十余位号码一些数字是一些ID超过10位的数字。此外,如果一个数字在小数点后有3位以上的数字,这些数字也会被替换。如果它有小数点,我不想要一个数字被替换。有些身体可以帮助吗?
例如,说一个数字字符串“3452678916381914”。其实它必须被替换。但上面的正则表达式并没有取代它。对于数字如123445.567美元 - 这些数字不应该被取代。但上述正则表达式替换45.567
答
使用lookahead and lookbehind正则表达式,第一个断言开始单词边界不是由$
或.
先,然后断言结束字边界不是由$
或.
它同时适用于例如跟着你提供的,则可能需要调整一点点地处理一些极端情况
(?<![\$\.])\b\d{3,}\b(?![\$\.])
看到demo,它匹配第一个2而不是休息
3452678916381914 # match
1234 56789 # match
$1234,45.567
$1234
12.345
12345.6678
123$
给出一些示例输入/输出。 – rafid059
我没有得到超过10位数字的位。所以,你需要匹配长度为4-9的int值,而不是跟在'$'之后?试试['(?
'(? Skycc