0

在这里我做了一个正则表达式,其中 _pattern 是团队列表,_name 是我想查找它是否匹配 _pattern 的关键字。

结果显示匹配。我想知道为什么可能因为关键字与_pattern 完全不同。我怀疑它与 é 符号有关。

string _pattern = "Ipswich Town F.C.|Ipswich Town Football Club|Ipswich|The Blues||Town|The Tractor Boys|Ipswich Town";
string _name = "Estudiantes de Mérida";
regex = new Regex( @"(" + _pattern + @")", RegexOptions .IgnoreCase );

Match m = regex. Match (_name );
if (m . Success)
{
   var g = m. Groups [1 ]. Value;
   break ;
}
4

1 回答 1

0

它与 é 符号无关。让我们回顾一些事情..

是不是有2个| 在您提出的问题中:

The Blues||Town

此外,该点在正则表达式中具有特殊含义,因此您应该将其转义

meaIpswich Town F\.C\.

替代方案应该用括号括起来:

(Ipswich Town F.C.)|(Ipswich Town Football Club)|(Ipswich)|

以下 java 行中的括号不是必需的

regex = new Regex( @"(" + _pattern + @")"

Aneway,它匹配的原因不是有效的正则表达式。我认为这与您对 java API 的使用有关。

我会为您的目的重写的正则表达式是:

^((Ipswich Town F\.C\.)|(Ipswich Town Football Club)|(Ipswich)|(The Blues)|(Town)|(The Tractor Boys)|(Ipswich Town))$

如您所见,存在一些差异。

于 2012-05-24T19:03:46.470 回答