gpt4 book ai didi

java - 故意忽略连字符

转载 作者:行者123 更新时间:2023-11-30 07:22:47 25 4
gpt4 key购买 nike

我正在尝试编写一个小实用程序,它可以将大约 8000 个源代码文件中的一些变量替换为其他格式。

例如,我在 Progress4GL 上编写了以下类型的源代码。注意:Progress4GL 允许在变量名称中使用连字符:

where x-crudefn.segment-id[5] =crudefn.segment-id[v-idx]

我需要准确找到crudefn.segment-id的出现

当我使用正则表达式(crudefn.segment-id)(\[)时,它在等号的两个部分上找到它。

在这种情况下,x-crudefn.segment-id 是另一个变量,我不想替换它。

我只想替换变量crudefn.segment-id

当我尝试使用正则表达式[^\-](crudefn.segment-id)(\[)忽略连字符时,它还在匹配结果中包含等号( “=crudefn.segment-id[”),我不想要。在某些情况下,源代码如下:

where x-crudefn.segment-id[5] =crudefn.segment-id[v-idx]

在其他一些情况下,它是这样的:

其中 x-crudefn.segment-id[5] = a + roughfn.segment-id[v-idx]

最佳答案

您似乎想匹配 crudefn单词作为整个单词,但不包括连字符后面的位置。

你可以使用

(?<!-)\bcrudefn\.segment-id\[

请参阅regex demo

\b单词边界将使单词 crudefn在非单词字符之后匹配,以及负向后查找 (?<!-)如果该单词前面出现连字符,则匹配失败。

另请注意,必须对点进行转义以匹配文字点(否则,它将匹配除换行符之外的任何字符。)

在 Java 中,

String pattern = "(?<!-)\\bcrudefn\\.segment-id\\[";

关于java - 故意忽略连字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37260216/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com