我想从一个.cson文件中从oorexx中捕获逻辑运算符,因为我想使用Atom Editor支持Oorexx的支持语法。这些是我试图涵盖的操作员:
>= <= > < = >< <> == == // && || ** ¬> ¬< ¬= ¬== >> << >>= << ¬<< >> ¬>> <<=
这是CSON文件中的正则零件:
'match': '\+ | - | [\\] | \/ | % | \* | \| | & |=|¬|>|<|
>= | <= | ([\\]>) | ([\\]<) | ([\\]=) | >< | <> | == | ([\\]==) |
\/\/ | && | \|\| | \*\* | ¬> | ¬< | ¬= | ¬== | >> | << | >>= | ([\\]<<) | ¬<< |
([\\]>>) | ¬>> | <<='
我在斜线(向前和向后)上挣扎,而且双**
我对Regex的了解非常基本,这是非常基本的。有人可以帮助我吗?
您在管道杆周围有空格:这些空间在正则表达式中计数。因此,当您编写诸如| ** |
之类的东西时,双星号被捕获,但是如果它们被两侧的空间包围,而不是将它们固定在一个单词或开始/结束时一条线。斜线同样的问题 - 我已经对其进行了测试,并且似乎确实为我抓住了它们,但是只要您的斜杠(或星号)在两个空间之间。
其他一些要记住的事情:
- 您不需要后斜线周围的方括号;它们可用于提供可能匹配的可能字符的类。例如,
[<>]=
将同时捕获>=
和<=
。编写[\]
等于直接编写\
,因为\
由于第一次逃脱后斜击而被视为单个字符。同样,您的括号也没有使用;请参阅分组。 - 还考虑使用
+
和*
等重复操作员。因此,\>+
将同时捕获>
和>>
。 - 最后,问号将通过将上一个字符(或在方括号中的字符组(或一组字符)标记为可选的,可以帮助您避免重复。
==?
将匹配=
和==
。
您可以将很多陈述与这三个技巧组合在一起……我将把练习留给您!
在开发较长的正则表达式时只是另一个提示 - 使用Regex101之类的测试仪或测试文件类似的测试仪来查看您的实时更改,而Regexper这样的调试者将帮助您了解如何解析正则表达式。