Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 故意忽略连字符_Java_Regex - Fatal编程技术网

Java 故意忽略连字符

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

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

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

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\\[";