首页 > 解决方案 > 如何排除带有前面符号的字符串?

问题描述

我有两个简单的字符串:

s = "7/20-21 Hello, World."
s2 = "20-21 Hello, World."

什么是正确的正则表达式模式,只能在第二个字符串中找到数字?只有在没有前面的符号时,我才尝试提取“20-21”......下面的两个版本仍然从第一个字符串中得到“20-21”:

"[^/]?[0-9]{1,2}[/|-][0-9]{1,2}[\s]{1}"
"[^/][0-9]{1,2}[/|-][0-9]{1,2}[\s]{1}"

这个版本给我一个错误...

"(?<![/])[0-9]{1,2}[/|-][0-9]{1,2}[\s]{1}"

任何帮助,将不胜感激!

谢谢!

标签: regexregex-lookarounds

解决方案


您可以使用

(?:\s|^)[0-9]{1,2}[/-][0-9]{1,2}\s

查看正则表达式演示

细节

  • (?:\s|^)- 空格 ( \s) 或 ( |) 字符串的开头
  • [0-9]{1,2}- 1 或 2 位数字
  • [/-]- 一个/-
  • [0-9]{1,2}- 1 或 2 位数字
  • \s- 一个空格

推荐阅读