Java 故意忽略连字符
我正在尝试编写一个小实用程序,它可以将大约8000个源代码文件中的一些变量替换为其他格式 例如,我在Progress4GL上编写了以下类型的源代码。 注意:Progress4GL允许在变量名中使用连字符:Java 故意忽略连字符,java,regex,Java,Regex,我正在尝试编写一个小实用程序,它可以将大约8000个源代码文件中的一些变量替换为其他格式 例如,我在Progress4GL上编写了以下类型的源代码。 注意:Progress4GL允许在变量名中使用连字符: where x-crudefn.segment-id[5] =crudefn.segment-id[v-idx] 我需要准确地找到crudefn.segment id 当我使用regex(crudefn.segment id)(\[))时,它会在等号的两个部分找到它 在本例中,x-crude
where x-crudefn.segment-id[5] =crudefn.segment-id[v-idx]
我需要准确地找到crudefn.segment id
当我使用regex(crudefn.segment id)(\[)
)时,它会在等号的两个部分找到它
在本例中,x-crudefn.segment id
是另一个变量,我不想替换它
我只想替换变量crudefn.segment id
当我尝试使用regex[^\-](crudefn.segment id)(\[)
)忽略连字符时,它还包括匹配结果(“=crudefn.segment id[”)
)中的等号,这是我不想要的。在某些情况下,源代码类似于:
where x-crudefn.segment-id[5] =crudefn.segment-id[v-idx]
在其他一些情况下是这样的:
其中x-crudefn.segment id[5]=a+crudefn.segment id[v-idx]
您似乎希望将crudefn
字作为一个整体匹配,但不包括连字符后面的位置
你可以用
(?<!-)\bcrudefn\.segment-id\[
您应该查找构成变量名的内容。
然后围绕它构造一个正则表达式 例如,以一个词开头,以一个词结尾,等等
(
这样,您就不必担心愚蠢的单词边界
还有虚假的标点符号
试试看
String pattern = "(?<!-)\\bcrudefn\\.segment-id\\[";