簡體   English   中英

使用正則表達式在匹配字符串之前或結尾插入字符串

[英]Insert a string before a matching string or at the end using regex

我有一個字符串必須包含_exact 我正在使用Java。

  • 如果字符串末尾有語言環境( _en_ja ),請在語言環境之前添加_exact。
  • 如果_exact已經存在,請不要再添加。
  • 如果結尾沒有語言環境,也沒有確切的語言環境,請在字符串末尾添加_exact

例如:

  • 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))$

如果有人可以幫我提出一個能完成這項工作的正則表達式,那就太好了! 謝謝!

您可以使用此正則表達式:

str = str.replaceAll("^(?!.*_exact(?:_en|_ja)?$)(.+?)(_en|_ja)?$", "$1_exact$2");

正則演示

  • (?!.*_exact(?:_en|_ja)?$)是一個否定的超前行為,它會跳過以_exact_exact_en_exact_ja結尾的輸入。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM