【发布时间】:2013-02-15 23:19:23
【问题描述】:
示例文本: 在公园里,孩子们玩耍。孩子个子高。孩子看着另一个孩子玩耍。
我想匹配第一句中的“child”,第二句和第三句中的“Child”,而不是第三句中的“child”。或者换句话说,匹配“Child”或“child”,但如果以“another”开头,则不匹配
我以为我可以用消极的眼神来做到这一点
((?<\!another) [Cc]hild)
但似乎无法获得正确的语法以生成有效的正则表达式。
即使我可以正确地使用语法,我也不确定我是否可以在 GWT 中做到这一点。这是来自 GWT Javadoc 的 sn-p
正则表达式语法中特定于 Java 的构造(例如,
[a-z&&[^bc]], (?<=foo), \A, \Q)仅在纯 Java 实现中有效,在 GWT 实现中无效,...
任何帮助或见解将不胜感激。
更新:
Colin 的回答几乎可行,但并不完全正确。
科林的正则表达式确实匹配“孩子”和“孩子”,而不是像我问的那样匹配“另一个孩子”。不过也有一些问题。
我要做的是匹配“孩子”和“孩子”,这样它们就可以替换为孩子的名字或正确的代词他/她,这取决于孩子的性别。
Colin 的正则表达式的问题在于它匹配“, child” 和“.child”。如果那是文本中的第一个单词,它也不匹配“Child”。例如:
“孩子去了公园。在公园里,孩子在玩耍。孩子很高。孩子看着另一个孩子在玩耍。”
第一个 Child 不匹配。随后的匹配项分别是“, child”、“.child”和“.child”。
我研究了 Colin 想出的正则表达式,试图让它只匹配“child”或“Child”,但无法使其工作。
【问题讨论】:
标签: javascript regex gwt negative-lookbehind