Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.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,所以我对regex有点陌生,需要一些帮助。我动态生成了输入字符串,其示例如下: (ACTOR > 0OR(PROC <> NULL AND REVIEW=NULL ANDFERDINAND = NAME ) ) 所以我想知道是否有人能帮我。提前感谢。您可以尝试此操作,但案例和费迪南德无法处理。对于这一点,正则表达式是不合适的,因为没有简单的分离标准 String str2 = str1 .replaceAll("([0-9])(?=[A-Z])", "$1 ")

所以我对regex有点陌生,需要一些帮助。我动态生成了输入字符串,其示例如下:

(ACTOR > 0OR(PROC <> NULL AND REVIEW=NULL ANDFERDINAND = NAME ) )

所以我想知道是否有人能帮我。提前感谢。

您可以尝试此操作,但案例
和费迪南德
无法处理。对于这一点,正则表达式是不合适的,因为没有简单的分离标准

String str2 = str1
      .replaceAll("([0-9])(?=[A-Z])", "$1 ")                 //1
      .replaceAll("\\bAND\\b", "&")                          //2
      .replaceAll("\\bOR\\b", "|")                           //3
      .replaceAll("(?<![=<>!])=(?!=)", "==")                 //4
      .replaceAll("<>", "!=")                                //5
      .replaceAll("(?<=[^&| ])(==|!=|&|\\)|\\|)", " $1")     //6
      .replaceAll("(==|!=|&|\\(|\\)|\\|)(?=[^ &|])", "$1 "); //7
String str2=str1
.replaceAll(“([0-9])(?=[A-Z])”,“$1”)//1
.replaceAll(“\\bAND\\b”、“&”)//2
.replaceAll(“\\bOR\\b”,“|”)3
.replaceAll(“(?!])=(?!=)”,“=”//4
.replaceAll(“,”!=”//5

.replaceAll(“(?如果replace”和“into”&”(周围有空格?)还有,原始字符串是错误还是原样?@GenoChen:对于你的第一个问题,不,那不行。因为不能保证在ANDAlso前后会有空格,所以
>0或
原样。这就是为什么我提到在
之前或之后可能会有空格,也可能不会有空格的原因
在字符串中,我不确定这是否超出了正则表达式的“表达能力”。也许它需要为此构建一个语法树(或者我只是把这个问题弄得太复杂了?)。对于字符串
CLASS\u SUM>=10&&COUNTRY!=USA
,这是输出
CLASS\u SUM>==10&&COUNTRY!==USA
,这是错误的。您介意检查一下吗?是的,这没有包含在原始问题中,但很容易修复。我将修改我的答案。当您进行广泛测试时,可能会有更多的情况。您应该你可以试着学习正则表达式。它不难理解,你可以自己修改模式。
String str2 = str1
      .replaceAll("([0-9])(?=[A-Z])", "$1 ")                 //1
      .replaceAll("\\bAND\\b", "&")                          //2
      .replaceAll("\\bOR\\b", "|")                           //3
      .replaceAll("(?<![=<>!])=(?!=)", "==")                 //4
      .replaceAll("<>", "!=")                                //5
      .replaceAll("(?<=[^&| ])(==|!=|&|\\)|\\|)", " $1")     //6
      .replaceAll("(==|!=|&|\\(|\\)|\\|)(?=[^ &|])", "$1 "); //7