正则表达包装词

时间:2012-12-17 18:15:34

标签: java regex

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

规则:

  • 除'和'之外的所有单词都需要用SYN()
  • 包装
  • String可以包含无限数量的单词,与String中所有单词相同的规则appyl。

示例:

<伦敦和厕所'成为'SYN(伦敦)和SYN(厕所)'

'10和Mayfield和伦敦'将成为'10和SYN(梅菲尔德)和SYN(伦敦)'(10不包装,因为它不是一个词)

我的问题的原因是我使用的是ORACLE同义词库,SQL语法要求用SYN()包装单词。

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

1 个答案:

答案 0 :(得分: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)