2012-10-25 5 views
0

내가 사용하고어떻게이 정규식이 작동하지 않습니까?</p> <pre><code>"<ab[^>]*href="\lyrics\*">(.*?)</a>"; </code></pre> <p>그리고 나는이 paremeters에서 값을 찾기 위해 노력하고있어 :

내가 찾을 필요가
 <a href="/lyrics/anything.html">This is what I need</a> 

"이것은 내가 필요로하는 것입니다"는 그러나 "아무것도" 링크에 따라 변경됩니다. 나는 모든 'a'태그 안에있는 텍스트를 찾고 싶지는 않지만 단지 가사 폴더 안에있는 텍스트 만 찾으려고합니다. 왜 이것이 현재 작동하지 않는지 모르겠다. 나는 설명하기에 끔찍하지만 미리 감사드립니다. 아, 그리고 아마도 정규식이 최선의 방법은 아니라는 것을 이해합니다.하지만 정말 조사하고 싶습니다. 대신 /를 사용하는 \\를 탈출하는

+0

] * HREF = \ "\/가사 \/* \" > (. *?) – JohnLBevan

답변

2

은 (는 /lyrics/하지 \lyrics\. 또한

, 당신은 " 아닌 모든 문자에 일치되어야 할 때 \\*은, 0 개 이상의 \ 문자와 일치합니다.

다음 작업을 수행합니다.

"<a\b[^>]*href=\"/lyrics/[^\"]*\">(.*?)</a>" 
+0

아, 내 마음이 완전히 미끄러졌습니다. 감사! – iyop45

+0

<\/a>을 계속 사용해야했지만 오류가 발생했지만 올바른 방향으로 나를 밀어 주셔서 감사합니다. – iyop45

0

슬래시가 잘못되었습니다. 어떤 경로를 구성하는지) * :

<a\b[^>]*href=\"/lyrics/.*\">(.*?)</a> 
+0

일반적으로'/'를 이스케이프 할 필요는 없습니다. – Oded

+0

Ahh - 감사합니다 Oded; 난 항상 문제없이 사용 했어. 그래서 그들은 불필요하다는 것을 깨닫지 못했다. - 제거되었다. (근본적으로 나는 당신의 대답과 점을 지적 해 주었다. – JohnLBevan

+1

추적 추적이 필요한 문자열의 끝 대신에 다음'''까지만 일치하기 때문에'.' 대신'[^ \ "]'을 사용했습니다. – Oded

0

사용중인 RegEx 엔진에 따라 다릅니다. 주어진 Perl이나 Java 엔진은 내가 잘못 본 것입니다.

\b

\\lyrics\\*/lyrics/.*해야 불필요 (펄, 당신은뿐만 아니라 /을 탈출해야합니다.)

+0

'''에 대한 이스케이프와 정규 표현식이'''로 묶여 있고';'으로 끝나는 라인은 자바 또는 C#으로 가정합니다. – Oded

+0

비록 Php를 사용하고 있습니다. 나는 비교적 새로운 언어이기 때문에 다른 언어처럼 보일 수 있습니다. 중요한 차이가 있습니까? – iyop45

+0

이 경우에는 그렇지 않습니다. 많은 다른 정규식 엔진이 있으며 많은 사람들이 동일한 연산자를 사용하지만 일부 명령 행 유틸리티 (예 : grep)는 완전히 다릅니다. 장래의 정규 표현식 질문에 대해서는 표현식을 어디에서 사용하고 있는지 알려줌으로써 게시물에서 추론 할 필요가 없습니다. ;) –