-5

如果有人可以为我提供正则表达式来执行以下操作,我将不胜感激。

规则:

  • 除了 'and' 之外的所有单词都需要用 SYN() 包裹
  • 字符串可以包含无限数量的单词,相同的规则适用于字符串中的所有单词。

例子:

'伦敦和厕所'变成'SYN(伦敦)和SYN(厕所)'

'10 and Mayfield and London' 将变为 '10 and SYN(Mayfield) and SYN(London)' (10 没有包装,因为它不是一个词)

我提出问题的原因是我使用的是 ORACLE 词库,并且 SQL 语法需要用 SYN() 包裹单词。

我最初打算通过搜索空格然后使用 String.format(SYN(%s), 'London') 将单词包装在 SYN() 中来拆分字符串中的所有单词,但我知道所有这些可以用正则表达式来完成,我认为会有一些热切的正则表达式狂热者会帮助我。

4

1 回答 1

0

尝试

System.out.println("10 and Mayfield and London".replaceAll("(\\p{Alpha}+)", "SYN($1)").replace("SYN(and)", "and"));

输出

10 and SYN(Mayfield) and SYN(London)
于 2012-12-17T18:34:42.293 回答