等号后的正则表达式特定单词

时间:2017-06-21 20:43:27

标签: regex netbeans

问题是在整个文件中查找和替换单词。我正在尝试重命名几个字段,但不编辑这些字段的系统名称。最后,需要查找/替换问题,问题,问题,问题。我正在使用Netbeans(查找并替换正则表达式)打开包含此代码的.properties文件,但可以使用其他内容。

需要替换等号右侧的文本。有时在右边的单词旁边有句号,大部分时间都没有。尝试使用正则表达式,因为文件中有大约10000行(这是系统字段的显示文本而不更改字段引用本身)。

要搜索的文本示例:

issue.columns.admin.title=Issue Navigator Default Columns

browseproject.issues.by.status.more=View these issues in the Issue Navigator 
sorted by Status

issue.operations.voting.resolved=You cannot vote or change your vote on 
resolved issues.

在netbeans中使用以下作为模式,大约90%正确。

(?<!([=.[a-z]]))issue(?!([[a-z]]))

但是,它也符合'问题'。在'issue.operations.voting.resolved'这样的字段中,这意味着通过更改对系统字段的引用,查找和替换会导致问题。有没有办法添加到我已经做过的事情,使它匹配出现在等号之后而不是之前的句子的单词?

1 个答案:

答案 0 :(得分:0)

您可以使用

(?i)(\G(?!^)|^[^=\n\r]*=)(.*?)\bissues?\b

替换为$1$2<SOME_REPLACEMENT>

请参阅regex demo

匹配:

  • (?i) - 一个内联不区分大小写的修饰符,使模式不区分大小写
  • (\G(?!^)|^[^=\n\r]*=) - 第1组(在替换模式中使用$1引用):上一个匹配后的位置(\G(?!^))或后面一行的开头除=以外的0 +字符和换行符,然后是=
  • (.*?) - 第2组(在替换模式中称为$2):任何0+字符,尽可能少,直到第一次出现...
  • \bissues?\b - 整个字issueissues