我很抱歉标题不清楚,但我不知道如何打电话。 通过简单的样本更容易展示。
我在文本文件中有以下几行(实际上是PHP
代码)
'config' => array
(
'dataContainer' => 'Table',
'enableVersioning' => true,
),
'list' => array
(
'sorting' => array
(
'mode' => 0,
'flag' => 0,
'panelLayout' => 'filter;sort,search,limit',
'fields' => array
(
'id',
'guid',
'name',
),
),
)
我想替换','这些数组的最后一行,以纠正输出。像这样:
'config' => array
(
'dataContainer' => 'Table',
'enableVersioning' => true
),
'list' => array
(
'sorting' => array
(
'mode' => 0,
'flag' => 0,
'panelLayout' => 'filter;sort,search,limit',
'fields' => array
(
'id',
'guid',
'name'
)
)
)
所以我试着抓住这些字符串:
String regex = ",\n[^\\t]*[)]";
code = code.replaceAll(",\n[^\\t]*[)]", "\n");
这是一个逗号后跟换行符,一个包含任意数量的制表符和一个封闭圆括号的linestart。
这应该换成换行符,任意数量的制表符和封闭的圆括号
毕竟,只有逗号才会被删除。我该怎么做?
答案 0 :(得分:2)
您可以使用它并替换为empty string
code = code.replaceAll(",(?=\\s*\\))", "")
答案 1 :(得分:2)
将,(\\s*\\))
替换为$1
。这里$1
表示正则表达式捕获的第一个组(即\\s*\\)
,多个空格后跟)
)。
答案 2 :(得分:1)
一个好的替代品将是:
String corrected = input.replaceAll(",(\\s*\\))", "$1" );
答案 3 :(得分:0)
code = code.replaceAll(",\\s+\\)", "\n)");