2

查看我正在进行的工作 RegExp Ltd[.'s]{0,2} http://rubular.com/r/1FZvA9Nlul

我正在针对此列表运行它:

Ltd's
Ltd.
Ltd
LtdTestTEst
Ltds
sdfTestLtd

如何编写 RegExp 以便我不匹配我当前的 RegExp 匹配的sdfTestLtdand 。LtdTestTEst

进一步澄清。

我通过 java 的 String.matches() 方法传递上面的列表,我希望它只为以下模式返回 true:

Ltd's
Ltd.
Ltd
Ltds
4

5 回答 5

5

这应该与您的示例完全匹配: ^Ltd('?s|\.)?$

于 2013-01-03T19:24:26.377 回答
4

把a^放在开头,a$放在最后。

http://rubular.com/r/F2VQUUvWLf

于 2013-01-03T19:19:20.290 回答
3

你不应该这样做。

如果使用或等效方法,用于表示字符串开始/结束的^ $特殊字符在 Java 中通常不是必需的String.matches(),因为 Java(与其他语言中的其他搜索/匹配运算符相反,与 Rubular 工具相反)匹配完整的字符串

   System.out.println("xHello".matches("Hello"));
   // false: no match
   System.out.println("xHello".matches(".*Hello"));
   // true: match
   System.out.println("sdfTestLtd ".matches("Ltd[.'s]{0,2}"));
   // false: no match
于 2013-01-03T19:23:14.213 回答
2

只需放在^开头即可。我认为您可能会对输出的工作方式感到困惑。

它似乎只打印您写入Match result:窗口的任何内容,但只会突出显示匹配项。

如果您还想控制字符串的结尾,那么您可以使用$

于 2013-01-03T19:20:52.247 回答
0

使用这个正则表达式 ^Ltd[.'s]{0,2}$

于 2013-01-03T20:15:31.963 回答