如何使用cson的正则表达式

时间:2017-03-08 21:15:01

标签: regex atom-editor cson

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

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

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

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

我挣扎着斜线(向前和向后)以及双**我对正则表达式的了解非常基本,说得很好。是否有人可以帮助我?

1 个答案:

答案 0 :(得分:0)

管道周围有空格:这些空格在正则表达式中计算。所以当你写| \*\* |之类的东西时,双星号会被捕获,但如果它们被每边的空格包围,那么只会,而不是如果它们被粘贴到一个单词或者一行的开头/结尾。斜线也有同样的问题 - 我已经测试了它,它确实似乎为我捕获它们,但只要你的斜线(或星号)在两个空格之间。

要记住的其他一些事项:

  • 你不应该需要反斜杠周围的方括号;它们可用于提供匹配的可能字符的。例如,[<>]=将同时捕获>=<=。写[\\]等同于直接编写\\,因为\\计为单个字符,因为第一个转义为反斜杠。同样,这里的括号没有被使用;见grouping
  • 还要考虑使用+*之类的repetition operators。因此\\>+会同时抓住\>\>>
  • 最后,通过将前一个字符(或方括号中的字符组)标记为可选,问号将帮助您避免重复。 ==?将与===匹配。

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

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