我要求字符串必须包含_exact
。我正在使用Java。
_en
或_ja
),请在区域设置之前添加_exact。_exact
已存在,请勿再次添加。_exact
。E.g:
something
- > something_exact
something_en
- > something_exact_en
something_ja
- > something_exact_ja
something_exact_en
- > something_exact_en
something_exact
- > something_exact
我花了一些时间想出了2个正则表达式,如果在相同的字符串上连续运行,那就让它成为可能。我不确定它们是否涵盖了所有可能的情况。
^(.*)(?<!_exact)(_(?:en|ja))$
^(.*)(?<!_exact)(?<!_(?:en|ja))$
如果有人能帮助我提出一个完成这项工作的正则表达式,那就太棒了!谢谢!
答案 0 :(得分:2)
您可以使用此正则表达式:
str = str.replaceAll("^(?!.*_exact(?:_en|_ja)?$)(.+?)(_en|_ja)?$", "$1_exact$2");
(?!.*_exact(?:_en|_ja)?$)
是一个消极的预测,它会跳过以_exact
或_exact_en
或_exact_ja
结尾的输入。