D¾ð¾î¿¡¼­ÀÇ Á¤±ÔÇ¥Çö
ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®



joinc´Â Firefox¿Í chrome¿¡¼­ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼­´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.


Á¤±ÔÇ¥Çö

Á¤±ÔÇ¥ÇöÀº ÅØ½ºÆ®¿¡¼­ ¸ÅĪµÇ´Â ¹®ÀÚÀÇ ÆÐÅÏÀ» ã¾Æ³»±â À§ÇØ »ç¿ëÇÏ´Â °­·ÂÇÑ Åø·Î, Perl, Ruby, Javascript µîÀÇ ¾ð¾î¿¡ Æ÷ÇԵǾî ÀÖ´Ù. C¾ð¾îÀÇ °æ¿ì¿¡µµ ¶óÀ̺귯¸® ÇüÅ·ΠÀÌ¿ëÇÒ ¼ö ÀÖ´Ù. ÀÌÁß Perl°ú Ruby´Â Á¤±ÔÇ¥ÇöÀ» ¸Å¿ì ´É¼÷ÇÏ°Ô ´Ù·çµµ·Ï ¸¸µé¾îÁ® ÀÖ´Ù. D¾ð¾î´Â ·±Å¸ÀÓ ¶óÀ̺귯¸® ÇüÅ·ΠÁ¤±ÔÇ¥ÇöÀ» Áö¿øÇÑ´Ù. ¿©±â¿¡¼­´Â ÆÞ°ú ºñ±³Çذ¡¸é¼­, D¾ð¾î¿¡¼­ÀÇ Á¤±ÔÇ¥Çö¿¡ ´ëÇØ¼­ ¾Ë¾Æº¸µµ·Ï ÇÒ °ÍÀÌ´Ù.
¿ªÀÚÁÖ : ¿ø¹®Àº Ruby¿Í ºñ±³Çؼ­ ¼³¸íÇϰí ÀÖÁö¸¸, °³ÀÎÀûÀ¸·Î Perl¿¡ ´õ Àͼ÷ÇÑ °ü°è·Î Perl·Î ´ëüÇß½À´Ï´Ù.

Àå±ÔÇ¥Çö¿¡ ´ëÇÑ ÀÚ¼¼ÇÑ ³»¿ëÀº Á¤±ÔÇ¥Çö¹®¼­µéÀ» Âü°íÇϱ⠹ٶõ´Ù.

ÆÐÅϸÅĪ

perlÀº Á¤±ÔÇ¥Çö°ú °ü·ÃµÈ Àü¿ëÀÇ ¹®¹ýÀ» Á¦°øÇÑ´Ù. ÆÐÅϸÅĪÀº ´ÙÀ½°ú °°Àº ¹æ¹ýÀ¸·Î ÀÌ·ç¾îÁø´Ù.
$string = "hello yundream";  
$string =~ m/yundream/;  
 
¸ÅĪÀÌ ÀÌ·ç¾îÁöÆí ÂüÀÌ ¸®ÅϵȴÙ.
$string = "hello world";  
  
if($string =~ m/yundream/)  
{  
print "OK\n";  
}  
 

D´Â perl¿¡¼­¿Í °°Àº Àü¿ëÀÇ ¹®¹ýÀ» °¡Áö°í ÀÖÁö´Â ¾Ê°í, ÇÔ¼öÂ÷¿ø¿¡¼­ Áö¿øÇÑ´Ù.
auto s = "hello yundream";  
std.regexp.find(s, "yundream"); // óÀ½ ÀÏÄ¡µÈ À§Ä¡ÀÎ 6ÀÌ ¸®ÅϵȴÙ.  
std.regexp.find(s, "world"); // ÀÏÄ¡µÈ ÆÐÅÏÀÌ ¾øÀ»°æ¿ì -1ÀÌ ¸®ÅϵȴÙ.  
 

Perl¿¡¼­´Â ()¸¦ »ç¿ëÇØ¼­ °¢°¢ÀÇ ¸ÅĪµÈ°ªÀ» º¯¼ö¸íÀ¸·Î ¾ò¾î¿Ã ¼ö ÀÖ´Ù.
$line = "abcdefg";  
$line =~ m/(.*)(cd)(.*)/;  
print "$1\n";  
print "$2\n";  
print "$3\n";  
 

C³ª C++·Î ÀÌ·±Äڵ带 ¸¸µé¾î¾ß ÇÑ´Ù°í »ý°¢Çغ¸¶ó. ¹ú½áºÎÅÍ °ñÄ¡°¡ ¾ÆÆÄ¿Ã °ÍÀÌ´Ù. ±×·¯³ª D¿¡¼­´Â °£´ÜÇÏ°Ô ÇØÄ¡¿ï ¼ö ÀÖ´Ù.
auto s = std.regexp.search("abcdefg","c");  
if (s)  
{  
writefln("%s[%s]%s", s.pre, s.match(0), s.post);  
}  
 
´ÙÀ½°ú °°ÀÌ ´õ °£´ÜÇÏ°Ô ¸¸µé ¼öµµ ÀÖ´Ù.
if (auto s = std.regexp.search("abcdefg","c"))  
{  
writefln("%s[%s]%s", s.pre, s.match(0), s.post);  
}  
 

ġȯ

ġȯÀº ´õ À¯¿ëÇϰí Àç¹ÌÀÖ´Â ±â´ÉÀÌ´Ù. ´ÙÀ½Àº ¹®ÀåÁß¿¡ µîÀåÇÏ´Â ¸ðµç "a"¸¦ "ZZ"·Î º¯°æÇÏ´Â Perl ÄÚµå´Ù.
#!/usr/bin/perl  
  
$s = "Strap a rocket engine on a chicken.\n";  
$s =~ s/a/ZZ/g;  
print $s;  
 

ÀÌ°É D·Î ¹Ù²Ù¾î º¸¾Ò´Ù.
char[] s = "Strap a rocket engine on a chicken.";  
char[] b = new char[80];  
b = sub(s, "a", "ZZ"); // óÀ½ ¸ÅĪµÇ´Â ¹®ÀÚ¿­¸¸ ġȯ  
writefln(b);  
b = sub(s, "a", "ZZ", "g"); // ¸ðµç ¸ÅĪµÇ´Â ¹®ÀÚ¿­À» ġȯ  
writefln(b);  
 

´ÙÀ½°ú °°ÀÌ ¸ÅÄ¡µÈ ¹®ÀÚ¿­ÀÇ ·¹ÆÛ·±½º¸¦ ÀÌ¿ëÇÑ Ä¡È¯µµ °¡´ÉÇÏ´Ù.
b = sub(s, "[ar]", "[$&]", "g");   
// result: St[r][a]p [a] [r]ocket engine on [a] chicken.  
 

¸ÅĪµÈ ¹®ÀÚ¿­À» ´ë¹®ÀڷΠġȯÇÒ ¼öµµ ÀÖ´Ù.
b = sub(s, "[ar]",  
(RegExp m) {return toupper( m.match(0));}, "g");  
 
toupper Àº std.string¸¦ importÇØ¼­ »ç¿ëÇÒ ¼ö ÀÖ´Ù.

·çÇÁ

¹®ÀÚ¿­¿¡ ´ëÇØ¼­ ·çÇÁ¸¦ µ¹¸é¼­ ¸ðµç ¸ÅĪµÇ´Â °ÍµéÀ» ã´Â °Íµµ °¡´ÉÇÏ´Ù.
import std.stdio;  
import std.regexp;  
  
void main()  
{  
foreach(m; RegExp("ab").search("abcabcabab"))  
{  
writefln("%s[%s]%s", m.pre, m.match(0), m.post);  
}  
}   
// Ãâ·Â°á°ú :   
// [ab]cabcabab  
// abc[ab]cabab  
// abcabc[ab]ab  
// abcabcab[ab]  
 

Âü°í¹®Çå

* http://www.troubleshooters.com/codecorn/littperl/perlreg.htm
* http://www.digitalmars.com/d/regular-expression.html
* C¿Í regex·Î ±¸ÇöÇÑ ´Ü¾î ÃßÃâ±â ¿¹Á¦
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.