正则表达式匹配字符串中的可选整个单词

时间:2017-02-03 16:06:12

标签: c# regex

我正在使用Regex对一组查看工资的字符串执行一些验证。输入字符串可能如下所示:

£21220至£24565
£21220 - £24565

我希望得到这两个数字。最初我正在测试中间有'到'但我得不到匹配。这就是我到目前为止所做的:

£(\ d *)\ S ^到$ \ S£(\ d *)\Ž

理想情况下,我希望它能够正常工作,因此它可以是中间的' - '或'to'。

2 个答案:

答案 0 :(得分:2)

使用替换组:

£(\d+)\s*(?:-|to)\s*£(\d+)$

仅当值位于字符串的末尾时才需要$(您的模式包含\z,字符串锚点的最后,这就是为什么我在这里使用$。)

请参阅regex demo

enter image description here

模式详情

  • £ - 一个英镑的货币符号
  • (\d+) - (捕获)匹配一个或多个数字的组1
  • \s* - 0+ whitespaces
  • (?:-|to) - -to
  • \s* - 0+ whitespaces
  • £ - 货币符号
  • (\d+) - 捕获与一个或多个数字匹配的第2组
  • $ - 字符串结尾(仅在需要时使用)。

答案 1 :(得分:2)

您可以使用括号和|字符来定义在单个集合中具有多个可能匹配的捕获组(即(to|-))将匹配"到"或" - "明确地说:

£\d+\s*(to|-)\s*£\d+

示例

enter image description here

模式细分

  • £ - 英镑符号。
  • \d+ - 一位或多位数。
  • \s* - 可选数量的空格。
  • (to|-) - 一个匹配"到"的组或" - "明确。
  • \s* - 可选数量的空格。
  • £ - 英镑符号。
  • \d+ - 一位或多位数。