Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/319.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 正则表达式使用regexpall保持1或0_Java_Regex_Replaceall - Fatal编程技术网

Java 正则表达式使用regexpall保持1或0

Java 正则表达式使用regexpall保持1或0,java,regex,replaceall,Java,Regex,Replaceall,我想用replaceall和正则表达式将一些文本转换成其他文本 我的文字如下: This is with something extra constraint xhiho, This is without something extra constraint hfdlh This is with something extra, --constraint xhiho This is without something extra -- constraint hfdlh 现在我想要的结果是

我想用replaceall和正则表达式将一些文本转换成其他文本

我的文字如下:

This is with something extra constraint xhiho,

This is without something extra constraint hfdlh
This is with something extra, --constraint xhiho

This is without something extra -- constraint hfdlh
现在我想要的结果是:

This is with something extra constraint xhiho,

This is without something extra constraint hfdlh
This is with something extra, --constraint xhiho

This is without something extra -- constraint hfdlh
因此,我需要在单词constraint前面加上2
-
,如果有
在末尾,将它放在2
-
前面

我尝试了以下代码:

oConvert = oConvert.replaceAll("constraint(.*)(,?)", "$2--constraint$1");
但是它不起作用,它没有给出
,在2
-
前面,您可以使用:

str = str.replaceAll("(\\h+constraint\\h+[^,]*)(,?)", "$2 --$1");

正则表达式详细信息:

  • :启动捕获组#1
    • \h+
      :匹配1+个空格
    • 约束
      :匹配
      约束
    • \h+
      :匹配1+个空格
    • [^,]*
      :匹配0个或更多非
  • :捕获组结束#1
  • :开始捕获组#2
    • ,?
      :匹配可选逗号
  • :捕获组结束#2

使用
constraint([^,]*)(,?)
constraint(.[^,])(,?)
两者都不起作用也适用于不适用的行,但您要求的正是该行
这是没有额外约束的hfdlh
必须变成
这是没有额外约束的hfdlh
这不起作用,它不会把,在前面-,在
--
之前会有一个
。您是否检查了链接演示中的输出:请注意,如果结尾逗号不在then end,则
$
将不匹配,您应该使用:
(\\h+constraint\\h+[^,]*)(,?)
作为正则表达式。逗号后面是空格,因此第二个选项更好,但它也会在-,前面放一个,不应该放在那里,但您想放
之前--
如果结尾有逗号。你能检查输出并告诉我这是否是你想要的吗。