匹配模式与外国字符

时间:2012-05-24 19:00:42

标签: regex pattern-matching

这里我做一个正则表达式,其中_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 ;
}

1 个答案:

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

正如您所看到的,有一些差异。