'Regular Expression'에 해당되는 글 5건

  1. 2009/03/02 정규표현식(Regular Expression) Href URL 캡쳐(Capture)
  2. 2009/02/26 여러줄을 한번에 StringBuilder로 감싸는 방법~! - Editplus 정규표현식, 바꾸기 기능 (4)
  3. 2009/02/13 Visual Studio에서 " " 따옴표로 묶은 문자열만 잡기
  4. 2009/02/13 Editplus의 정규표현식 사용 문자열 바꾸기 (3)
  5. 2007/08/01 XML Schema Regular Expressions
2009/03/02 09:35

정규표현식(Regular Expression) Href URL 캡쳐(Capture)

참고 주소 

http://hoons.kr/Board.aspx?Name=QACSHAP&Mode=2&BoardIdx=20596&Key=&Value=

http://phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=32231

 



이 글은 먼저 훈스닷넷(hoons.kr)에 질문으로 올라온 글 덕에 작성해본 코드이고요.

정규표현식(Regular Expression)을 이용해 HTML의 링크에 해당하는 <a href="..." 형태의 URL 부분만 받아오도록 처리하는 방법을 아래 코드로 요약해봅니다.

자세한 주석의 설명은 없지만, () 괄호로 구분되는 정규표현식 테그로 치환되는 값들을 유심히 살펴보시면 됩니다. 

 주석에 나와 있는 숫자 설명은

붉은색으로 강조해 둔 부분에 들어갈 값을 설명한 내용이에요~


(PS. 첨부된 파일은 테스트용 전체 소스에요)

/// <summary>

/// URL을 뽑아온다

/// 0:Link

/// 1:host.domain (FQDN)

/// 2:protocol

/// 3:domain extension (.net, .co.kr, .com ...)

/// 4:port

/// </summary>

/// <param name="strHtml"></param>

/// <returns></returns>

private List<string> GetHrefs(string strHtml)

{

List<string> urlList = new List<string>();

Regex r;

Match m;

 

// ref. url http://phpschool.com/gnuboard4/bbs/board.php?bo_table=tipntech&wr_id=32231

string pattern = string.Empty;

pattern += @"((http|https|ftp|mms):\/\/[0-9a-z-]+(\.[_0-9a-z-]+)+(:[0-9]{2,4})?\/?)"; // domain+port

pattern += @"([\.~_0-9a-z-]+\/?)*"; // sub roots or sub directory

pattern += @"(\S+\.[_0-9a-z]+\??)?"; // file & extension string

pattern += @"([_0-9a-z#&=-]+)*"; // parameter

 

r = new Regex(pattern, RegexOptions.IgnoreCase | RegexOptions.Compiled);

 

for (m = r.Match(strHtml); m.Success; m = m.NextMatch())

{

if (string.IsNullOrEmpty(m.Groups[0].Value))

continue;

 

urlList.Add(m.Groups[0].Value);

}

return urlList;

}

 

저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License
올블로그추천버튼 블코추천버튼 블로그뉴스추천버튼 믹시추천버튼 한RSS추가버튼 구글리더기추천버튼


이 포스팅이 도움이 되었다면 구글에서 관련 정보를 찾아 보세요 ^^


Trackback 0 Comment 0

Trackback : http://i-ruru.com/trackback/409 관련글 쓰기

2009/02/26 08:59

여러줄을 한번에 StringBuilder로 감싸는 방법~! - Editplus 정규표현식, 바꾸기 기능



자주 사용하는 기능인데 귀찮아서 -_ -;;

강좌로 올리진 않았는데..

생각난 김에 잠깐 캡쳐를 해서 샥샥~ 블로깅 합니다.



뭐 하다보면 StringBuilder 일 수 있고 아닐 수도 있지만

유사한 방법으로 활용하시면 될 듯 해요 ㅎㅎ

일단 핵심인 Editplus가 있어야 겠고요.

먼저 다음과 같은 쿼리문을 스트링 빌더(StringBuilder)로 감싸야 한다고 생각해보죠.

뭐 3줄 이니 그냥해도 되지만, 줄이 많은 경우를 가정해서 하는 것이라고 생각해주세요.






먼저 '바꾸기 (Ctrl + H)'를 눌러서 바꾸기 창을 띄우고요.

다음처럼 따라서 누르면 위쪽에 '찾을 말' 부분에 추가가 되거든요.


먼저 한 줄의 시작 부분에



그 뒤부분에 나오는 전체 문자들을 전부 잡을 것이기 때문에
우리가 필요로 하는 부분을 테그로 감싸야 합니다. () 모양인 것이 태그죠.


이제 모든 문자열을 잡습니다. '.' 점(dot)이 그 것을 나타냅니다.


어떤 문자열이든 한 글자 이상 나오면, 그 것을 잡는다는 말이고요.



이제 줄의 끝까지를 잡는다는 말이에요.
결과적으로 한줄의 어떤 문자열이 오든 잡는다는 말이죠. 대신 한 글자라도 있어야 하고요.



그렇게 적용한 후에 아래 '바꿀 말' 부분을 작성해줍니다.

위에서 '찾을 말' 에서 태그 () 로 잡은 안의 문자열 들은 \1 '바꿀 말'의 \1로 변환 되는 거에요.

기존에 있던 글자를 () 괄호 안의 .+ 가 잡은 모든 글자들이 아래처럼 감싸지게 됩니다!!

sb.AppendLine(" 기존의 글 ");


위의 형식으로 잡는다는 말이 되는겁니다. 간단하죠?


이제 '모두 바꾸기' 버튼을 누르면,




다음과 같이 한번에 변환 되는 겁니다.

아주 간단한 팁이지만 - _-;;

아직도 노가다로 코딩하시는 분들을 위해....

아주 약간이나마 팁이 되기를... ㅋㅋ



저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License
올블로그추천버튼 블코추천버튼 블로그뉴스추천버튼 믹시추천버튼 한RSS추가버튼 구글리더기추천버튼


이 포스팅이 도움이 되었다면 구글에서 관련 정보를 찾아 보세요 ^^


Trackback 2 Comment 4

Trackback : http://i-ruru.com/trackback/411 관련글 쓰기

  1. Subject decoder의 생각

    Tracked from decoder's me2DAY 2009/02/26 23:25 delete

    여러줄을 StringBuilder로 감싸기 이거 요긴하게 써먹을 수 있겠구만. :)

  2. Subject sunyruru의 생각

    Tracked from sunyruru's me2DAY 2009/02/27 15:50 delete

    Ruru' Programming :) :: 여러줄을 한번에 StringBuilder로 감싸는 방법~! - Editplus 정규표현식, 바꾸기 기능 아주 가끔씩은 쓸 일이 있더라구요 ㅎㅎ

  1. Favicon of http://blog.naver.com/gaebit/ BlogIcon 이경배 2009/12/16 10:20 address edit & del reply

    오... 좋은 글 잘 읽었습니다.
    http://blog.naver.com/gaebit/120093613178
    에 제가 만든 프로그램이 있습니다.
    앞뒤로 따옴표 붙혀주는 프로그램인데요. 스트링 빌더 말고 그냥 스트링에 사용하실때 유용하실껍니다.
    스트링빌더나 다른 언어에서 쓸 수 있게 앞뒤에 사용자가 원하는 문자를 붙힐 수 있도록 수정해야겠네요^^;

    • Favicon of http://i-ruru.com BlogIcon 써니루루 2010/01/01 16:01 address edit & del

      잘 만드셨네요~ ㅎㅎ
      앞에랑 뒤에랑 붙일 문자열을 지정할 수 있으면 더 좋을 것 같네요 ~

  2. add 2010/07/19 17:46 address edit & del reply

    예제덕에 쉽게 잘배우고 갑니다.
    감사해요~

  3. 희야 2010/08/05 17:21 address edit & del reply

    난 그냥 바꾸기에서 ^p -> ";);^psb.append(" 하고

    앞뒤만 조금만 수정해줌 -_-;

2009/02/13 18:19

Visual Studio에서 " " 따옴표로 묶은 문자열만 잡기


오늘은 정규표현식(Regular Expression)에 대한 것을 많이 다루네요 -_ -;;

작업이 노가다 작업을 자주해서 그런가;;

자꾸 편한 방법을 찾다보니 -_ ;;;


"{([:Ha:Wh:Pu:a])+}"


자~~

먼저 답을 해보면 위와같이 하면 되구요.

위에 축약형 기호들은 Visual Studio 전용이에요 ㅎㅎ

다른곳에선 안된답니다;;


위와 같이 사용하면 Visual Studio 에서


public static string strName = "application name";

이렇게 따옴표 안에 글자들을 전부 잡을 수 있어요~

찾아 바꾸기로 많은 변수를 잡아서 일괄적으로 변경할 일이 있으시면 이걸 사용하시면 되겟죠 ^ ^



일반 정규표현식이랑 다르게 VS에서는 {} 가 테그 치환자네요.

바꾸기를 할 경우 따옴표 안에 있는 문자들만 선택되게 되고.

\1 을 통해서 재사용 할 수 있겠습니다~

위 코드에 들어간 것들은 아래와 같은 뜻이에요~
:Ha - 한글
:Wh - 공백
:Pu - 기호
:a - 영문자 & 숫자
+ - 1개 문자 이상
저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License
올블로그추천버튼 블코추천버튼 블로그뉴스추천버튼 믹시추천버튼 한RSS추가버튼 구글리더기추천버튼


이 포스팅이 도움이 되었다면 구글에서 관련 정보를 찾아 보세요 ^^


Trackback 0 Comment 0

Trackback : http://i-ruru.com/trackback/406 관련글 쓰기

2009/02/13 13:34

Editplus의 정규표현식 사용 문자열 바꾸기


뭐 부연설명 안해도 빨간색 메모장으로 잘 아시리라.. 생각하는 Editplus..

오늘 하던일 중에

C# 에 변수들이 주우우욱~~~~

장황하게


DB_Insert_SMS_User_aspx_03= "이름";


이런식으로 변수들이 엄청나게 늘어있는 코드들 중에서


이름

이런식으로 줄마다 값만 남고 다 필요게 하는 작업이 필요했다.

처음엔 '노가다 작업을 그냥 할까? - _-... ' 생각했지만..

문득!!!


'Editplus에 정규표현식으로 바꾸면 되자나!!' 라는 삽질스러운 생각이 왜 들었는지 ㅠ_ ㅠ

결국 10분이나 걸려서 정규표현식(Regular Expression)을 완성했다...


짜잔~

'바꾸기 (Ctrl + H)' 를 눌러서 '정규식(&x)' 를 체크해주고,


찾을말 : [_a-zA-Z0-9 ]*[=]?[\t| ]*"(.*)"[\t| ]*;[\t| ]*$

바꿀말 : \1




이런식으로 입력하면 다들 내가 원하는 변환을 얻을 수 있을 것이다 ㅠㅠ

혹시라도 100년만에 나와 같은 삽질을 할 지 모르는 위인을 위하야~~!!

내용은 별거 없다..

(10분동안 뭐한게냐... ㅠㅠ)
저작자 표시 비영리 변경 금지
크리에이티브 커먼즈 라이선스
Creative Commons License
올블로그추천버튼 블코추천버튼 블로그뉴스추천버튼 믹시추천버튼 한RSS추가버튼 구글리더기추천버튼


이 포스팅이 도움이 되었다면 구글에서 관련 정보를 찾아 보세요 ^^


Trackback 0 Comment 3

Trackback : http://i-ruru.com/trackback/405 관련글 쓰기

  1. Favicon of http://rabbitchris.tistory.com BlogIcon 이재학 2009/02/13 17:19 address edit & del reply

    아, 넘 어려운 정규식.. ^^>

  2. 구성모 2011/09/09 15:47 address edit & del reply

    정규표현식 검색했더니...여기로오네여 ㅋㅋㅋ 추석 잘보내세여~~

    • Favicon of http://i-ruru.com BlogIcon 써니루루 2011/09/30 16:48 address edit & del

      ㅋㅋㅋ 블로그에 정리한게 아니라 대부분 팁이라 볼게 없는데 어째 낚인거네요~

2007/08/01 21:14

XML Schema Regular Expressions

http://www.w3.org/TR/xmlschema-2/#regexs

A ·regular expression· R is a sequence of characters that denote a set of strings  L(R). When used to constrain a ·lexical space·, a regular expression  R asserts that only strings in L(R) are valid literals for values of that type.

Note: Unlike some popular regular expression languages (including those defined by Perl and standard Unix utilities), the regular expression language defined here implicitly anchors all regular expressions at the head and tail, as the most common use of regular expressions in ·pattern· is to match entire literals. For example, a datatype ·derived· from string such that all values must begin with the character A (#x41) and end with the character Z (#x5a) would be defined as follows:
<simpleType name='myString'>
 <restriction base='string'>
  <pattern value='A.*Z'/>
 </restriction>
</simpleType>
In regular expression languages that are not implicitly anchored at the head and tail, it is customary to write the equivalent regular expression as:

   ^A.*Z$

where "^" anchors the pattern at the head and "$" anchors at the tail.

In those rare cases where an unanchored match is desired, including .* at the beginning and ending of the regular expression will achieve the desired results. For example, a datatype ·derived· from string such that all values must contain at least 3 consecutive A (#x41) characters somewhere within the value could be defined as follows:

<simpleType name='myString'>
 <restriction base='string'>
  <pattern value='.*AAA.*'/>
 </restriction>
</simpleType>











자세한 내용은 위 참조 사이트를 확인해서 자세히 보시길
크리에이티브 커먼즈 라이선스
Creative Commons License

'.NET > XML.NET' 카테고리의 다른 글

RSS 2.0과 MSXML 이용한 RSS 리더 구현  (0) 2007/08/20
XSLT 변환 출력 프로그램  (0) 2007/08/02
XML Schema Regular Expressions  (0) 2007/08/01
올블로그추천버튼 블코추천버튼 블로그뉴스추천버튼 믹시추천버튼 한RSS추가버튼 구글리더기추천버튼


이 포스팅이 도움이 되었다면 구글에서 관련 정보를 찾아 보세요 ^^


Trackback 0 Comment 0

Trackback : http://i-ruru.com/trackback/121 관련글 쓰기