Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.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/Scala正则表达式:将括号中的数字移动到字符串中_Java_Regex_Scala_Replace_Regex Group - Fatal编程技术网

Java/Scala正则表达式:将括号中的数字移动到字符串中

Java/Scala正则表达式:将括号中的数字移动到字符串中,java,regex,scala,replace,regex-group,Java,Regex,Scala,Replace,Regex Group,如何捕获数字(在以下情况下为250)并将其插入替换字符串中 我拥有的:“位数据(250)的字符()不为空” 我想要的:“位数据的字符(250)不为空” 我希望在Scala中实现这一点,但我想它只是使用java.util.regex 以下是我尝试过的: “CHAR()表示位数据(250)不为NULL”“。replaceAll(“CHAR\\\(\\)表示位数据\\([0-9]+)\\”,“这是字符串:$0”) 我只是不知道如何只获取数字,以便将它们重新插入到新字符串中。您可以使用 .replace

如何捕获数字(在以下情况下为250)并将其插入替换字符串中

我拥有的:
“位数据(250)的字符()不为空”

我想要的:
“位数据的字符(250)不为空”

我希望在Scala中实现这一点,但我想它只是使用
java.util.regex

以下是我尝试过的:

“CHAR()表示位数据(250)不为NULL”“。replaceAll(“CHAR\\\(\\)表示位数据\\([0-9]+)\\”,“这是字符串:$0”)

我只是不知道如何只获取数字,以便将它们重新插入到新字符串中。

您可以使用

.replaceAll("""(CHAR \()(\) FOR BIT DATA)\((\d+)\)""", "$1$3$2")

详细信息

  • (CHAR\()
    -第1组(
    $1
    ):
    CHAR(
    文本
  • (\)用于位数据)
    -第2组(
    $2
    ):
    )用于位数据
    文本
  • \(
    -a
    字符
  • (\d+)
    -第3组(
    $3
    ):一个或多个数字
  • \)
    -a
    字符

要在正则表达式中转义括号,需要一个反斜杠(Java/Scala字符串还需要一个额外的反斜杠)。否则,它被视为一个群体。另外,我想你想要
$1
而不是
$0
,但我不确定,谢谢。我最终使用了以下方法,但您的解决方案效果很好<代码>“CHAR()表示位数据(250)不为空”“。replaceAll(“CHAR\\(\\)表示位数据\\([0-9]+)\\)不为空”,“CHAR($1)表示位数据不为空”)