正则表达式查找后面不跟分隔符和 1 或 2 位数字的字符串

问题描述 投票:0回答:1

我需要制作一个正则表达式(.net风格),仅匹配以下字符串中的“sometext”(第二行末尾有一个空格):

sometext
sometext 
sometext dsf 2131
sometext-1234

但不会匹配以下任何内容:

sometext  12
sometext 3
sometext2
sometext-1

也就是说,只有当“sometext”后面没有任何数量的可选分隔符(如空格、“-”、“/”、“.”)和 1 或 2 位数字(3 位或更多数字即可)时,它才应该匹配“sometext” ).

我尝试了这个带有负向前瞻的正则表达式

sometext($|\W(?!\d{1,2}))

但没有走得太远。

regex regex-lookarounds
1个回答
0
投票

试试这个

^sometext(?![\s\-\/\.]?\d{1,2})(?!\d)

正则表达式解释:

  1. ^:匹配字符串的开头。
  2. sometext:匹配文字“sometext”。
  3. (?![\s-/.]?\d{1,2}):负向前视以确保下一个字符不是:可选分隔符 ([\s-/.]?),后跟1–2 位数字 (\d{1,2})。
  4. (?!\d):另一个负向前瞻,以防止紧跟在“sometext”后面的数字。
© www.soinside.com 2019 - 2024. All rights reserved.