【问题标题】:Regex to match pattern consisting of several groups正则表达式匹配由几个组组成的模式
【发布时间】:2018-03-12 06:28:16
【问题描述】:

我有以下正则表达式,但它只匹配找到的模式的最后一次出现。正则表达式旨在匹配以下模式:

一个数字后跟一个\

一个单词后跟\

后跟\的另一个词

第四组可以是单个单词后跟 \ 或 2 或 3 个单词后跟 \

第五组必须是格式为 00.00 的浮点数

正则表达式为:

([0-9])\\(\w+)\\(\w+)\\((\w+\s+\w+\s+\w+)|\w+\s\w+|\w+)\\([+-]?\d*\.\d+)(?![-+0-9\\.])\\

被匹配的字符串是:

2\James\Brown\Football Club Mu\15.45\1\Jessie\Ellis\Football Club Performance\15.48\4\Dane\Brown\FC Football \15.52\5\Richardo\Flemmings\Football Club Striders\15.53\7\Lawrence\Brown\Football Club Testing\15.53\8\Jermy\Black\Football Club Ch\15.34\\

只有当正则表达式不以 \\ 结尾并且要与正则表达式匹配的字符串不以“\\”结尾时,才会检测到最后一条记录的匹配。

注意,要与正则表达式比较的字符串总是以“\\”结尾。

【问题讨论】:

  • 我试图用表达式检查你的正则表达式模式,但它不起作用。你能检查它的语法吗:regex101.com
  • 您可以在regex101.com/r/fM7uA5/338查看工作正则表达式

标签: c# regex


【解决方案1】:

您提供的正则表达式似乎根本不起作用。我无法弄清楚您要对此做什么,尤其是“+”和“-”字符。为了完全符合你的定义,我有这个:

([0-9])\\\w+\\\w+\\(\w+( \w+)?( \w+)?)\\[0-9][0-9]\.[0-9][0-9]

虽然您的示例与您的定义不太匹配,因为它们有一个尾随“\”,并且第三个示例在第四组中有一个尾随空格。假设这些示例是有效的,我将其修改为:

([0-9])\\\w+\\\w+\\(\w+( \w+)?( \w+)?) ?\\[0-9][0-9]\.[0-9][0-9]\\

【讨论】:

  • 我刚刚测试了这个解决方案,它匹配与之比较的字符串。需要进行哪些修改来检查具有以下模式 0.00 的浮点数。如果我将浮点数的模式修改为 0.00,则该字符串不匹配。
  • 浮动正则表达式:[0-9]*(?:\.[0-9]*)?
  • 我将浮动检查修改为 (\d+\.\d+) 以解决我提出的问题。
  • 正则表达式不匹配搜索这个\4\Dane\Brown\ Football \15.52
  • 正则表达式与此 4 Dane Brown FC Football 15.52 的搜索不匹配
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-25
  • 1970-01-01
  • 2012-11-21
  • 1970-01-01
  • 2019-01-13
  • 2019-07-14
相关资源
最近更新 更多