正则表达式,包含名称+“字符串”+数字,没有别的

时间:2017-08-30 10:15:08

标签: c++ regex

我想过滤一些包含字符串的名称,例如 “name”后跟字符串“ - whole”后跟一个数字,后面没有任何内容。 e.g。

  1. myName - 整个23(ok)
  2. somethingElse - 整个24(ok)
  3. 名字 - 整个25俱乐部(不好,因为字符串blub)
  4. somethingElse - 整个25米(不好,因为m)
  5. 我试过“/ \ w * - 整个\ d * / g” 匹配到数字,但如何检查数字后应为空,没有数字,没有字母或其他什么?

3 个答案:

答案 0 :(得分:2)

使用$将匹配锚定到字符串的末尾:“/ \ w * - 完整\ d * $ / g”

其他评论:

  • 您可能希望使用^
  • 锚定开头
  • 我对那些*量词非常怀疑。你几乎肯定想要+(意思是“一个或多个”)。
  • 我倾向于用\s*\s+替换空格以允许可变数量的空格。

答案 1 :(得分:0)

我在Javascript中编写了正则表达式。请检查它们并在C ++中相应地使用它们

正则表达式是

/[A-z]+\s-\sentire\s\d+$/

示例:

/[A-z]+\s-\sentire\s\d+$/.test('myName - entire 23'); //passes
/[A-z]+\s-\sentire\s\d+$/.test('somethingElse - entire 24'); //passes
/[A-z]+\s-\sentire\s\d+$/.test('name - entire 25 blub'); //fails
/[A-z]+\s-\sentire\s\d+$/.test('somethingElse - entire 25m'); //fails

答案 2 :(得分:0)

感谢您的快速支持,现在我说得对: 表达式为:\w*\s*-\s*entire\s*\d*$,它按预期工作。