2012-12-17 15 views
-5

如果有人能够提供给我一个正则表达式来执行以下操作,我将非常感激。正则表达式包装字

的规则:

  • 除了所有字“和”需要与SYN()
  • 的字符串可以包含单词无限量的包装,相同的规则appyl到所有的词语的字符串。

例子:

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

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

我的问题的原因是我使用ORACLE叙词表和SQL语法要求用SYN()包装单词。

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

+4

你有什么这么远吗? – Theolodis

+3

[你有什么尝试?](http://whathaveyoutried.com) – 2012-12-17 18:18:03

+5

堆栈溢出是**问题**的地方,而不是要求人们为你编写代码。 (有*是*的地方,这只是不是其中之一。)有关详细信息,请参阅[FAQ](http://stackoverflow.com/faq)。 –

回答

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) 
+0

Evgeniy Dorofeev - 非常感谢。 – Mike