Java 正则表达式使用regexpall保持1或0
我想用replaceall和正则表达式将一些文本转换成其他文本 我的文字如下: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 现在我想要的结果是
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(
:匹配1+个空格\h+
:匹配约束
约束
:匹配1+个空格\h+
:匹配0个或更多非[^,]*
,
:捕获组结束#1)
:开始捕获组#2(
:匹配可选逗号,?
:捕获组结束#2)
constraint([^,]*)(,?)
或constraint(.[^,])(,?)
两者都不起作用代码>也适用于不适用的行,但您要求的正是该行这是没有额外约束的hfdlh
必须变成这是没有额外约束的hfdlh
这不起作用,它不会把,在前面-,在--
之前会有一个,
。您是否检查了链接演示中的输出:请注意,如果结尾逗号不在then end,则$
将不匹配,您应该使用:(\\h+constraint\\h+[^,]*)(,?)
作为正则表达式。逗号后面是空格,因此第二个选项更好,但它也会在-,前面放一个,不应该放在那里,但您想放,
在之前--
如果结尾有逗号。你能检查输出并告诉我这是否是你想要的吗。