-1

我有 90% 有一个正则表达式,但我真的很感激在完成它时能得到一些帮助。

我从以下字符串开始。

String toiletDer= "TOILET, BOG, PUBLIC CONVENIENCE";

//格式化代码。

我需要它成为"({BOG}|{TOILET}|{PUBLIC CONVENIENCE})"

到目前为止,我的正则表达式是。

toiletDer.replaceAll("(\\p{Alpha}+)", "{$1}|").replace(",", "")

它产生following

"{TOILET}| {BOG}| {PUBLIC}| {CONVENIENCE}|"

我只希望在字符串中到达逗号时将单词包围在一组新的 {} 中,而不是当前工作方式的新单词。

4

4 回答 4

4

不会

String string = "({" + toiletDer.replaceAll(",\\s*","}|{") + "})"

更容易?

于 2013-07-19T13:37:17.300 回答
1

要在匹配部分中包含空格,您可以使用[\\p{Alpha}\\s]+. 最后匹配|你可以使用\\|$,所以也许试试这种方式

toiletDer.replaceAll("\\s*([\\p{Alpha}\\s]+)", "{$1}|").replaceAll(",|\\|$", "")

我还在\\s*第一个正则表达式的开头添加了以删除开头的空格{ BOG}

更新

如果你想用括号括起结果,你可以在开始和结束时添加它们。也不\p{Alpha}包含.,因为它是非字母数字字符。要将其包含在您的正则表达式中,您可以将其添加到[]字符类中。
这是更新的代码。

"(" + toiletDer.replaceAll("\\s*([\\p{Alpha}\\s]+)", "{$1}|")
    .replaceAll(",|\\|$", "") + ")";
于 2013-07-19T13:40:30.090 回答
0

尝试这个:

toiletDer.replaceAll("([^,]+)", "{$1}|").replace(",", "")

这假设您只有单词和逗号,没有特殊字符或其他字符。

于 2013-07-19T13:33:12.320 回答
0

用 a 替换所有逗号,并在开头}|{添加 a并在末尾添加 a。{}

但这仍然不能像你想要的那样对单词进行排序,即你会得到{TOILET}|{BOG}|{PUBLIC CONVENIENCE}而不是{BOG}|{TOILET}|{PUBLIC CONVENIENCE}

于 2013-07-19T13:37:27.343 回答