[메모]erlang 정규 사용

3958 단어 erlang
erlang 의 re 패 키 지 는 Perl(배 운 적 이 없 음...)을 호 환 하 는 정규 표현 식 입 니 다.
안의 함수 도 정규 에 대한 처리 이다.
 
lz 수준 제한 doc 잘 모 르 겠 어 요.조금 만 쓰 고 보충 해 주세요.
copile 함수 로 특정한 내부 에서 사용 하 는 정규 표현 식 을 되 돌 릴 수 있 습 니 다:
20> {ok,MP}=re:compile("abc",[caseless]).
{ok,{re_pattern,0,0,
                <<69,82,67,80,61,0,0,0,1,0,0,0,6,0,0,0,0,0,0,0,97,1,99,
                  ...>>}}

 "abc"와 일치 하 는 표현 식 옵션 을 만 듭 니 다.대소 문 자 를 구분 하지 않 습 니 다. 
다른 옵션 도 많아 요.
 
 
 
run 실행 정규 일치
두 개의 매개 변수 와 세 개의 매개 변수 형식 이 있 습 니 다.세 개의 매개 변수 형식 에 옵션 이 하나 더 있 습 니 다.
일부 예:MP 는 위의 함수 에서 생 성 된 것 입 니 다.
48> re:run("abcabc",MP,[]).
{match,[{0,3}]}
49> re:run("abcabc",MP,[{capture,all,list}]).
{match,["abc"]}
50> re:run("abcabcABC",MP,[{capture,all,list},global]).
{match,[["abc"],["abc"],["ABC"]]}

capture 에 대한 옵션 all 은 모든 first 입 니 다.하위 모드 를 표시 하지 않 습 니 다.
 
78> {ok,A}=re:compile("http(s)?",[caseless]).
{ok,{re_pattern,1,0,
                <<69,82,67,80,74,0,0,0,1,0,0,0,6,0,0,0,1,0,0,0,104,1,
                  112,...>>}}
79> re:run("Http://www.baidu.com",A,[{capture,all,list}]).
{match,["Http"]}
80> re:run("Https://www.baidu.com",A,[{capture,all,list}]).
{match,["Https","s"]}
81> re:run("Https://www.baidu.com",A,[{capture,[1],list}]).
{match,["s"]}
82> re:run("Https://www.baidu.com",A,[{capture,first,list}]).
{match,["Https"]}
83> re:run("Https://www.baidu.com",A,[{capture,all_but_first,list}]).
{match,["s"]}
 하위 모드 에 대해 서 는[1],[2]로 일치 할 수 있 습 니 다.예:
105> {ok,A}=re:compile("http(s)?://(.*)/(.*)?",[caseless]).
{ok,{re_pattern,3,0,
                <<69,82,67,80,103,0,0,0,1,0,0,0,7,0,0,0,3,0,0,0,104,1,
                  47,...>>}}
106> re:run("http://www.baidu.com/s?wd=erlang&ch=1&tn=98067068_dg",A,[{capture,[2],list}]).
{match,["www.baidu.com"]}
107> re:run("http://www.baidu.com/s?wd=erlang&ch=1&tn=98067068_dg",A,[{capture,[3],list}]).
{match,["s?wd=erlang&ch=1&tn=98067068_dg"]}
 
 
 
 
 
 
replace 실행 교체:
55> re:replace("abcabcabc","a","",[{return,list}]).
"bcabcabc"
56> re:replace("abcabcabc","a","",[{return,list},global]).
"bcbcbc"
57> re:replace("abcabcabc","a","").
[[]|<<"bcabcabc">>]

 
 
마지막 으로 split:
60> re:split("abcabcabc","a").
[<<>>,<<"bc">>,<<"bc">>,<<"bc">>]
61> re:split("abcabcabc","a",[{return,list}]).
[[],"bc","bc","bc"]

 
문서 의 example 가 많 았 으 면 좋 겠 는데......................................................
인터넷 에서 문서 하 나 를 찾 았 습 니 다.그러나 문서 에 오류 가 있 습 니 다.run 에서 모든 것 과 일치 하 는 global 옵션 을 추가 하면 됩 니 다.
http://veniceweb.googlecode.com/svn/trunk/public/daily_tech_doc/erlang_re_20091201.txt
또 하나의 자료 예 는 비교적 완전 하 다.
http://zotonic.com/documentation/908/just-enough-zotonic-source-part-3-regular-expressions

좋은 웹페이지 즐겨찾기