【问题标题】:Regular expression to capture command捕获命令的正则表达式
【发布时间】:2016-07-15 23:21:29
【问题描述】:

如何创建一个匹配 clear abc 的正则表达式,然后捕获可能会有所不同的 abc

命令clear 始终相同,字符串结构始终为clear ?,其中? 可以变化。

我猜它类似于/^clear \w$/,其中^ 确保字符串以clear 开头。但我想确保它只匹配包含两个单词且第一个单词是clear 的内容,以便它不匹配,例如clear ab cd efclear 后面的单词可以是 1 个字符也可以是多个字符,但不能以数字开头。

编辑

从答案中,我得到了正则表达式/^clear [a-zA-Z]\w*$/

如果清除后的变量可以是aab 之类的东西,也可以是f(x, y)。那么它是否只是/^clear [a-zA-Z][0-9a-zA-Z() ]*$/,所以它也接受() 和空格()?

如果它包含括号,确保它具有f(...) 的设计,它是否可以更健壮一点,所以我最终不会匹配例如f)dsada?

【问题讨论】:

  • 哪种特定正则表达式语法? BRE、ERE、PCRE、re2? \w 并非处处受到尊重。
  • 我不知道。我在 JavaScript 网站中使用它

标签: regex regular-language


【解决方案1】:

clear后的单词可以是1个字符,也可以是多个字符,但不能以数字开头。

你可以使用这个正则表达式:

/^clear [a-zA-Z]\w*$/
  • [a-zA-Z] 确保它以字母开头
  • \w* after 将匹配第一个字母后的 0 个或多个单词字符

如果POSIX 字符类可用,则使用:

/^clear [[:alpha:]][[:alnum:]_]*$/

【讨论】:

  • [a-zA-Z] 不能保证在所有语言环境中都做预期的事情;最好使用[[:alpha:]]
  • 看来我不能使用POSIX,但第一个正则表达式有效:D 在javascript中,我可以使用regex.test(str) 进行验证,但是清除后如何捕获变量值?
  • 如果 var adter clear 是一个有效的标识符,你最好使用[a-zA-Z_]\w* 来匹配它。
  • 我已经编辑了我的问题。希望没事。否则,我将创建一个新问题
  • @Jamgreen:根据已编辑的问题,您可以试试这个正则表达式:/^clear [a-zA-Z_][\w (),]*$/
猜你喜欢
  • 1970-01-01
  • 2019-03-17
  • 2011-03-03
  • 1970-01-01
  • 2014-01-02
  • 2014-08-31
  • 1970-01-01
  • 1970-01-01
  • 2018-03-11
相关资源
最近更新 更多