【问题标题】:regex match .net lessthan "<" (name)W7正则表达式匹配 .net 小于“<”(名称)W7
【发布时间】:2015-08-24 21:56:15
【问题描述】:

我正在尝试匹配我认为在 vb.net 中非常简单的正则表达式,尽管我并没有真正使用它们,并且在我正在读入的文本文件中应该有多次出现细绳。我正在使用的比赛是

Dim match As Match = Regex.Match(input, "<[A-B]+W7", RegexOptions.IgnoreCase)

也试过了

Dim match As Match = Regex.Match(input, "<[\w]+W7", RegexOptions.IgnoreCase)

我需要的是与始终以&lt; 开头的名称匹配的名称,后跟以W7 结尾的名称。例如&lt;TESTW7。然后我需要从比赛中抓取所有出现的事件。

我错过了什么?谢谢!

编辑

Dim match As Match = Regex.Match(input, "\<(\w+)W7", RegexOptions.IgnoreCase)

上面的行匹配一个案例,但我试图匹配多个。例如 &lt;BEARW7&gt; &lt;&lt;&lt;ROOMW7&gt; &lt;&lt;VIVALDIW7&gt; &lt;&lt; AMESW7&gt;

我需要将 BEARW7、ROOMW7、VIVALDIW7 和 AMESW7 保存到一个数组或列表中,但似乎无法匹配过去的“BEARW7”,有没有办法让它匹配多个案例,比如 boost 的正则表达式?

【问题讨论】:

  • 您是否尝试过 debuggex.com 来查看您的正则表达式的匹配项和不匹配项?

标签: regex vb.net match


【解决方案1】:
  • 在第一个正则表达式&lt;[A-B]+W7 中,问题是您只匹配(name) 部分包含至少一个或多个字符(因为+)在A-B 范围内的字符串,即A 或B .

我认为由于第二个正则表达式,您希望 (name) 包含任何字符(字母和数字),因此,当您使用 IgnoreCase 选项时,您应该使用 [0-9A-Z] 范围,并且您将至少匹配一个或多个 A-Z 和 0-9 的小写或大写字母/数字。

所以你应该使用&lt;[0-9A-Z]+W7

  • 在第二个正则表达式&lt;[\w]+W7 中,我认为没有任何问题,因为您匹配的是您声明的字符串类型。

我没有在 Visual Basic.NET 中使用过正则表达式,正如@AlanMoore 所说,它不会与正则表达式的特殊语法产生任何冲突,所以我不知道可能出了什么问题。您可以尝试逃避它以确保安全,但这不是必需的。

可能与W7 的部分存在一些奇怪的冲突(但我不这么认为),因此您可以将它们放在括号之间以避免可能的冲突。

所以你应该使用&lt;[0-9A-Z]+(W7)&lt;[\w]+(W7)

如果是你不想匹配数字的情况(我不知道你的例子),你不能使用第二个正则表达式,你必须从第一个正则表达式中修剪数字。

所以你应该使用&lt;[A-Z]+(W7)

请注意,如果没有 IgnoreCase 选项,第二个正则表达式将继续工作,因为它匹配任何字母(大写或小写),但第一个正则表达式只匹配大写字母。

我建议您http://www.regexr.com/ 以便在程序中使用正则表达式之前尝试它们。它也有一个很好的备忘单。

【讨论】:

  • 尖括号永远不需要转义。它们用于一些特殊的组结构中,但总是以(? 开头。不可能偶然将&lt;&gt; 用作元字符。 (我知道的唯一例外是 Visual Studio 2012 之前的版本,但它现在使用 .NET 风格。)
  • 啊,好吧!感谢您的回复,我已经编辑了回复,所以我不会混淆任何人。
  • 我只在寻找字母 A-B 或 a-b,但我使用的是 regex.options 忽略大小写。这些名称都是实际名称,一些作曲家,一些岛屿等,但据我所知,所有名称都只包含“名称”部分的字母,并且后面都是“w7”,阅读艾伦的评论后编辑:this是visual studio 2010。那么这是否意味着它需要被转义?
  • @user3361936 不,您没有正确阅读答案。问题是您使用的是A-B 而不是A-Z。如果您想要多个匹配项,请使用 Matches 而不是 Match
  • 啊哇我不敢相信我错过了。好的,我会试试火柴。谢谢
猜你喜欢
  • 2016-01-22
  • 1970-01-01
  • 1970-01-01
  • 2013-02-17
  • 2013-12-04
  • 1970-01-01
  • 1970-01-01
  • 2017-06-06
  • 2021-11-21
相关资源
最近更新 更多