【问题标题】:How to use regex with cson如何将正则表达式与 cson 一起使用
【发布时间】:2017-03-08 21:15:01
【问题描述】:

我想在 .cson 文件中使用正则表达式从 ooRexx 中捕获逻辑运算符,因为我希望使用 Atom 编辑器支持 ooRexx 的语法高亮显示。这些是我试图涵盖的运算符:

>= <= \> \< \= >< <> == \== // && || ** ¬> ¬< ¬= ¬== >> << >>= \<< ¬<< \>> ¬>> <<=

这是 cson 文件中的正则表达式部分:

'match': '\\+ | - | [\\\\] | \\/ | % | \\* | \\| | & |=|¬|>|<|
>= | <= | ([\\\\]>) | ([\\\\]<) | ([\\\\]=) | >< | <> | == | ([\\\\]==) | 
\\/\\/ | && | \\|\\| | \\*\\* | ¬> | ¬< | ¬= | ¬== | >> | << | >>= | ([\\\\]<<) | ¬<< |
([\\\\]>>) | ¬>> | <<='

我在使用斜线(向前和向后)以及双 **我对正则表达式的了解非常基础,说得好听。有没有人可以帮我解决这个问题?

【问题讨论】:

  • 尝试只转义一次反斜杠,以便运算符中的每个\ 都变成正则表达式中的\\ 。你也不应该需要[ ]。还要说明您遇到的实际错误。

标签: regex atom-editor cson


【解决方案1】:

竖线周围有空格:这些空格计入正则表达式。所以当你写像| \*\* | 这样的东西时,双星号会被捕捉到,但只有如果它们在每一边都被一个空格包围,而不是它们被附加到一个单词或开头/行尾。斜杠也有同样的问题——我已经对其进行了测试,它似乎确实为我捕捉到了它们,但前提是你的斜杠(或星号)在两个空格之间。

需要记住的其他一些事项:

  • 您不应该在反斜杠周围使用方括号;它们对于提供要匹配的可能字符的类很有用。例如,[&lt;&gt;]= 将同时捕获 &gt;= 和 &lt;=。写[\\] 相当于直接写\\,因为\\ 算作单个字符,因为第一个转义反斜杠。同样,这里的括号也没有被使用;见grouping。
  • 还可以考虑使用repetition operators,如+ 和*。所以\\&gt;+ 将同时捕获\&gt; 和\&gt;&gt;。
  • 最后,问号将前一个字符(或方括号中的字符组)标记为可选,从而帮助您避免重复。 ==? 将匹配 = 和 ==。

结合这三个技巧,你可以将你的很多陈述组合在一起......我会把这个练习留给你!

开发长正则表达式时的另一个提示 - 使用像 Regex101 这样的测试器或类似的测试文件来实时查看您的更改,像 Regexper 这样的调试器将帮助您了解正则表达式的解析方式。

【讨论】:

  • 非常感谢。我不知道空格是正则表达式模式的一部分。现在我可以正常工作了。
  • @Atlantaner 太棒了!如果这对你有用,请mark the question as resolved。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-12-18
  • 2016-12-29
  • 2011-06-19
  • 2012-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多