短代码正则表达式

本文关键字:正则表达式 代码 | 更新日期: 2023-09-27 18:16:18

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

[playername Le'Veon Bell]

下面是正则表达式:

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

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

短代码正则表达式

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

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

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

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

现场演示

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

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

IDEONE

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

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

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

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