问题是在整个文件中查找和替换单词。我正在尝试重命名几个字段,但不编辑这些字段的系统名称。最后,需要查找/替换问题,问题,问题,问题。我正在使用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'这样的字段中,这意味着通过更改对系统字段的引用,查找和替换会导致问题。有没有办法添加到我已经做过的事情,使它匹配出现在等号之后而不是之前的句子的单词?
答案 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
- 整个字issue
或issues