短代码正则表达式



我编写了一个正则表达式来匹配类似于以下格式的短代码:

[playername Le'Veon Bell]

下面是正则表达式:

[playernames+(?<name>[w -'’]+)s*]

我知道正则表达式正在与球员名称中的单引号作斗争。我已经在这里测试了正则表达式,它似乎可以工作,但当我从我的web应用程序运行代码时,没有找到匹配。

根据您提供的信息,我相信[playernames+(?<name>[^]]+?)s*]应该可以工作。

唯一真正的区别是在捕获组[^]]+中,它匹配任何不是]的字符。这将有效地捕获[playername之后的任何内容,直到第一个 ]

您可以使用以下正则表达式:

[playernames+(?<name>.*?)s*]

现场演示

在本例中,您不需要转义出现在字符类中的-'符号。

Regex rgx = new Regex(@"[playernames+(?<name>[w '’-]+?)s*]");

IDEONE

在不了解更多关于您的场景的情况下,很难确定,但是根据您所拥有的,我想说您应该切换到更像这样的东西?

[playernames+(?<name>[^]s]*)s+]

将匹配任何没有方括号或空格的内容,这看起来就像你想要做的。我个人很想删除空格条件,只是因为名称中可能有空格。无论你的语言版本是c#的string.Trim(),你都可以将其称为post-facto。

当然,请注意,这与您所做的并不完全相同:您显式地限制了字符。但是看起来你想限制任何文本

最新更新