如何在 cson 中使用正则表达式
How to use regex with cson
我想在 .cson 文件中使用正则表达式从 ooRexx 捕获逻辑运算符,因为我想支持使用 Atom 编辑器突出显示 ooRexx 的语法。这些是我试图涵盖的运算符:
>= <= \> \< \= >< <> == \== // && || ** ¬> ¬< ¬= ¬== >> << >>= \<< ¬<< \>> ¬>> <<=
这是 cson 文件中的正则表达式部分:
'match': '\+ | - | [\\] | \/ | % | \* | \| | & |=|¬|>|<|
>= | <= | ([\\]>) | ([\\]<) | ([\\]=) | >< | <> | == | ([\\]==) |
\/\/ | && | \|\| | \*\* | ¬> | ¬< | ¬= | ¬== | >> | << | >>= | ([\\]<<) | ¬<< |
([\\]>>) | ¬>> | <<='
我在使用斜杠(向前和向后)以及双斜杠时遇到困难 **
我对正则表达式的了解非常基础,说得好听一点。有人可以帮助我吗?
您在管道条周围有 spaces:这些 spaces 被计算在正则表达式中。所以当你写像 | \*\* |
这样的东西时,双星号会被捕获,但是 只有 如果它们的每一侧都被 space 包围,而不是如果它们' re 附加到一个词或一行的 beginning/end 处。斜线也有同样的问题——我已经测试过了,它似乎确实帮我捕捉到了它们,但前提是你的斜线(或星号)在两个 space 之间。
其他一些注意事项:
- 反斜杠两边不需要方括号;它们对于提供 类 个可能的匹配字符很有用。例如,
[<>]=
将捕获 >=
和 <=
。写 [\]
等同于直接写 \
因为 \
算作一个字符,因为第一个转义反斜杠。同样,这里没有使用您的括号;参见 grouping。
- 也可以考虑像
+
和 *
一样使用 repetition operators。所以 \>+
会捕获 \>
和 \>>
。
- 最后,问号将前一个字符(或一组字符,在方括号中)标记为可选,从而帮助您避免重复。
==?
将同时匹配 =
和 ==
.
结合这三个技巧,您可以将很多语句组合在一起……我将把这个练习留给您!
开发长正则表达式时的另一个提示 — 使用像 Regex101 or similar with a test file to see your changes in real time, and debuggers like Regexper 这样的测试器将帮助您了解正则表达式的解析方式。
我想在 .cson 文件中使用正则表达式从 ooRexx 捕获逻辑运算符,因为我想支持使用 Atom 编辑器突出显示 ooRexx 的语法。这些是我试图涵盖的运算符:
>= <= \> \< \= >< <> == \== // && || ** ¬> ¬< ¬= ¬== >> << >>= \<< ¬<< \>> ¬>> <<=
这是 cson 文件中的正则表达式部分:
'match': '\+ | - | [\\] | \/ | % | \* | \| | & |=|¬|>|<|
>= | <= | ([\\]>) | ([\\]<) | ([\\]=) | >< | <> | == | ([\\]==) |
\/\/ | && | \|\| | \*\* | ¬> | ¬< | ¬= | ¬== | >> | << | >>= | ([\\]<<) | ¬<< |
([\\]>>) | ¬>> | <<='
我在使用斜杠(向前和向后)以及双斜杠时遇到困难 **
我对正则表达式的了解非常基础,说得好听一点。有人可以帮助我吗?
您在管道条周围有 spaces:这些 spaces 被计算在正则表达式中。所以当你写像 | \*\* |
这样的东西时,双星号会被捕获,但是 只有 如果它们的每一侧都被 space 包围,而不是如果它们' re 附加到一个词或一行的 beginning/end 处。斜线也有同样的问题——我已经测试过了,它似乎确实帮我捕捉到了它们,但前提是你的斜线(或星号)在两个 space 之间。
其他一些注意事项:
- 反斜杠两边不需要方括号;它们对于提供 类 个可能的匹配字符很有用。例如,
[<>]=
将捕获>=
和<=
。写[\]
等同于直接写\
因为\
算作一个字符,因为第一个转义反斜杠。同样,这里没有使用您的括号;参见 grouping。 - 也可以考虑像
+
和*
一样使用 repetition operators。所以\>+
会捕获\>
和\>>
。 - 最后,问号将前一个字符(或一组字符,在方括号中)标记为可选,从而帮助您避免重复。
==?
将同时匹配=
和==
.
结合这三个技巧,您可以将很多语句组合在一起……我将把这个练习留给您!
开发长正则表达式时的另一个提示 — 使用像 Regex101 or similar with a test file to see your changes in real time, and debuggers like Regexper 这样的测试器将帮助您了解正则表达式的解析方式。