2017-03-08 3 views
0

Atom 편집기를 사용하여 ooRexx를 지원하는 구문 강조를 원하므로 .cson 파일의 정규식을 사용하여 ooRexx에서 논리 연산자를 캡처하고 싶습니다. 사람들은 내가 커버하려고 연산자입니다정규식을 cson과 함께 사용하는 방법

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

을 그리고 이것은 CSON 파일의 정규식의 일부입니다

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

내가 (전후) 또한 슬래시와 사투를 벌인거야 double with ** 정규 표현식에 대한 나의 지식은 매우 기본이다. 저를 도울 수있는 누군가가 있습니까?

+0

백 슬래시를 한 번만 이스케이프 처리하여 연산자의 모든 '\'가 정규식에서 '\\'가되도록하십시오. '[]'도 필요하지 않습니다. 또한 실제 오류가 발생한 것을 설명하십시오. –

답변

0

파이프 막대 주위에 공백이 있습니다.이 공백은 정규 표현식에서 계산됩니다. 따라서 | \*\* | 같은 글자를 쓸 때 두 별표가 붙잡히지 만, 양쪽에 공백으로 둘러싸인 경우 만 붙이며 단어의 시작 부분이나 끝 부분에 붙는 것이 아닙니다. 슬래시와 같은 문제 - 테스트 해 보았습니다. 슬래시 (또는 별표)가 두 칸 사이에있는 한 내게 그걸 잡아주는 것처럼 보입니다. 명심해야 할

다른 몇 가지 :

  • 당신은 백 슬래시 주위에 대괄호를 필요가 없습니다; 그들은 클래스 가능한 일치하는 문자를 제공하는 데 유용합니다. 예를 들어 [<>]=>=<=을 모두 포착합니다. [\\]을 쓰는 것은 \\을 직접 작성하는 것과 같습니다. \\은 첫 번째 이스케이프 백 슬래시 때문에 단일 문자로 간주되기 때문입니다. 마찬가지로 괄호는 사용되지 않습니다. grouping을 참조하십시오.
  • repetition operators+*과 같이 생각하십시오. 따라서 \\>+\>\>>을 모두 잡습니다.
  • 마지막으로, 물음표는 이전 문자 (또는 대괄호로 묶은 문자 그룹)를 선택 사항으로 표시하여 반복을 피하는 데 도움이됩니다. ==?===과 일치합니다.

이 세 가지 트릭을 결합하여 많은 문장을 그룹화 할 수 있습니다 ... 나는 그 운동을 여러분에게 맡길 것입니다!

그냥 다른 힌트 긴 정규 표현식을 개발

은 - 실시간으로 변경 사항을 볼 수 Regex101 또는 테스트 파일과 유사한처럼 테스터를 사용하고 Regexper 같은 디버거는 정규 표현식 구문 분석하는 방법을 이해하는 데 도움이 될 것입니다.

+0

정말 고마워요. 공백이 정규식 패턴의 일부라는 사실을 알지 못했습니다. 이제는 작동하도록했습니다. – Atlantaner

+0

@Atlantaner 위대한! 그게 효과가 있다면 [해결 된 것으로 표시해주세요] (http://stackoverflow.com/help/someone-answers). – Victor