JavaTM 2 Platform
Standard Ed. 5.0

java.util.regex
Ŭ·¡½º Pattern

java.lang.Object 
  »óÀ§¸¦ È®Àå java.util.regex.Pattern
¸ðµç ±¸ÇöµÈ ÀÎÅÍÆäÀ̽º:
Serializable

public final class Pattern
extends Object
implements Serializable

ÄÄÆÄÀÏ ³¡³­ Á¤±Ô Ç¥ÇöÀÔ´Ï´Ù.

Á¤±Ô Ç¥ÇöÀº ij¸¯ÅÍ ¶óÀÎÀ¸·Î¼­ ÁöÁ¤ÇØ, ÀÌ Å¬·¡½ºÀÇ ÀνºÅϽº¿¡ ÄÄÆÄÀÏ ÇÒ ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù. »ý¼ºµÈ ÆÐÅÏÀº, Matcher °´Ã¼¸¦ ÀÛ¼ºÇϱâ À§Çؼ­ »ç¿ëµË´Ï´Ù. ÀÌ °´Ã¼´Â ÀÓÀÇ ¹®ÀÚ ¼ø¼­ °÷ÀÇ Á¤±Ô Ç¥ÇöÀ» ¼º³É ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¼º³ÉÀ» ½ÇÇàÇßÀ» ¶§ »óÅ´ ¸ðµÎ Á¤±Ô Ç¥Çö ¿£Áø¿¡ Æ÷ÇԵ˴ϴÙ. ÀÌ ¶§¹®¿¡ º¹¼öÀÇ Á¤±Ô Ç¥Çö ¿£ÁøÀÌ °°Àº ÆÐÅÏÀ» °øÀ¯ÇÒ ¼ö ÀÖ½À´Ï´Ù.

Ç¥ÁØÀûÀÎ calling sequence´Â ´ÙÀ½°ú °°ÀÌ µË´Ï´Ù.

 Pattern p = Pattern. compile ("a*b");
 Matcher m = p. matcher ("aaaaab");
 boolean b = m. matches ();

ÀÌ Å¬·¡½º¿¡ Á¤ÀÇÇÑ matches ¸Þ¼­µå¸¦ »ç¿ëÇϸé, Á¤±Ô Ç¥ÇöÀº ÇÑ ¹ø »ç¿ëÇÏ´Â °Í¸¸À¸·Î ³¡³³´Ï´Ù. ÀÌ ¸Þ¼­µå¸¦ 1ȸ È£ÃâÇÏ´Â °Í¸¸À¸·Î Ç¥ÇöÀÌ ÄÄÆÄÀÏ µÇ¾î ÀÔ·Â ¼ø¼­¿ÍÀÇ ¼º³ÉÀ» ÇÕ´Ï´Ù. ´ÙÀ½ÀÇ ¹®ÀåÀº Àü¼úÀÇ 3°³ÀÇ ¹®Àå°ú °°½À´Ï´Ù.

 boolean b = Pattern.matches("a*b", "aaaaab");
´Ù¸¸, ¼º³ÉÀ» ¹Ýº¹ÇÏ´Â °æ¿ì´Â ÄÄÆÄÀÏ ³¡³­ ÆÐÅÏÀ» ÀçÀÌ¿ëÇÒ ¼ö ¾ø±â ¶§¹®¿¡ È¿À²ÀÌ ÀúÇÏÇÕ´Ï´Ù.

ÀÌ Å¬·¡½ºÀÇ ÀνºÅϽº´Â ºÒº¯À̱⠶§¹®¿¡ º¹¼öÀÇ thread·Î µ¿½Ã¿¡ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. Matcher Ŭ·¡½ºÀÇ ÀνºÅϽº´Â º¹¼ö thread¿¡¼­ÀÇ µ¿½Ã »ç¿ë¿¡ ´ëÀÀÇÏ°í ÀÖ½À´Ï´Ù.

Á¤±Ô Ç¥Çö ±¸¹®ÀÇ ¿ä¾à

±¸¹® ¸ÅÄ¡ ´ë»ó
 
¹®ÀÚ
x ¹®ÀÚ x
\\ backslash ¹®ÀÚ
\0n 8 Áø¼ö 0n¸¦ °¡Áö´Â ¹®ÀÚ (0 <= n <= 7)
\0nn 8 Áø¼ö 0nn¸¦ °¡Áö´Â ¹®ÀÚ (0 <= n <= 7)
\0mnn 8 Áø¼ö 0mnn¸¦ °¡Áö´Â ¹®ÀÚ (0 <= m <= 3, 0 <= n <= 7)
\xhh 16 Áø¼ö 0xhh¸¦ °¡Áö´Â ¹®ÀÚ
\uhhhh 16 Áø¼ö 0xhhhh¸¦ °¡Áö´Â ¹®ÀÚ
\t ÅÇ ¹®ÀÚ ('\u0009')
\n °³Çà ¹®ÀÚ ('\u000A')
\r ¿Õº¹´ë ¸®ÅÏ ¹®ÀÚ ('\u000D')
\f ¿ëÁö º¸³» ¹®ÀÚ ('\u000C')
\a °æ°í (º§) ¹®ÀÚ ('\u0007')
\e À̽ºÄÉÀÌÇÁ ¹®ÀÚ ('\u001B')
\cx x¿¡ ´ëÀÀÇÏ´Â Á¦¾î ¹®ÀÚ
 
¹®ÀÚ Å¬·¡½º
[abc] a, b, ¶Ç´Â c (´Ü¼ø Ŭ·¡½º)
[^abc] a, b, c ÀÌ¿ÜÀÇ ¹®ÀÚ (ºÎÁ¤)
[a-zA-Z] a ~ z ¶Ç´Â A ~ Z (¹üÀ§)
[a-d[m-p]] a ~ d, ¶Ç´Â m ~ p: [a-dm-p] (°áÇÕ)
[a-z&&[def]] d, e, f (±³Â÷)
[a-z&&[^bc]] b¿Í c¸¦ Á¦¿ÜÇÏ´Â a ~ z: [ad-z] (°¨»ê)
[a-z&&[^m-p]] m ~ p¸¦ Á¦¿ÜÇÏ´Â a ~ z: [a-lq-z] (°¨»ê)
 
Á¤ÀÇ ³¡³­ ¹®ÀÚ Å¬·¡½º
. ÀÓÀÇÀÇ ¹®ÀÚ (ÁÙ ³¡ ±âÈ£¿Í ¼º³É ÇÏ´Â °æ¿ìµµ ÀÖ´Ù)
\d ¼ýÀÚ: [0-9]
\D ¼ýÀÚ ÀÌ¿Ü: [^0-9]
\s °ø¹é ¹®ÀÚ: [ \t\n\x0B\f\r]
\S ºñ°ø¹é ¹®ÀÚ: [^\s]
\w ´Ü¾î ±¸¼º ¹®ÀÚ: [a-zA-Z_0-9]
\W ºñ´Ü¾î ¹®ÀÚ: [^\w]
 
POSIX ¹®ÀÚ Å¬·¡½º (US-ASCII ¸¶¼Å)
\p{Lower} ¼Ò¹®ÀÚÀÇ ¿µ¹®ÀÚ: [a-z]
\p{Upper} ´ë¹®ÀÚÀÇ ¿µ¹®ÀÚ: [A-Z]
\p{ASCII} ¸ðµç ASCII ¹®ÀÚ: [\x00-\x7F]
\p{Alpha} ¿µ¹®ÀÚ: [\p{Lower}\p{Upper}]
\p{Digit} 10 Áø¼öÀÚ: [0-9]
\p{Alnum} ¿µ¼ýÀÚ: [\p{Alpha}\p{Digit}]
\p{Punct} ±¸µÎÁ¡ ¹®ÀÚ: ! "#$%&'()*+,-. /:;<=>? @[\]^_`{|}~ ¾ðÁ¨°¡
\p{Graph} Ç¥½ÃÇÒ ¼ö ÀÖ´Â ¹®ÀÚ: [\p{Alnum}\p{Punct}]
\p{Print} ÇÁ¸°Æ® °¡´É ¹®ÀÚ: [\p{Graph}\x20]
\p{Blank} °ø¹é ¶Ç´Â ÅÇ: [ \t]
\p{Cntrl} Á¦¾î ¹®ÀÚ: [\x00-\x1F\x7F]
\p{XDigit} 16 Áø¼öÀÚ: [0-9a-fA-F]
\p{Space} °ø¹é ¹®ÀÚ: [ \t\n\x0B\f\r]
 
java.lang.Character Ŭ·¡½º (´Ü¼øÇÑ java ¹®ÀÚ Å¸ÀÔ)
\p{javaLowerCase} java.lang.Character.isLowerCase()¿Í µî°¡
\p{javaUpperCase} java.lang.Character.isUpperCase()°ú µî°¡
\p{javaWhitespace} java.lang.Character.isWhitespace()¿Í µî°¡
\p{javaMirrored} java.lang.Character.isMirrored()¿Í µî°¡
 
Unicode ºí·Ï°ú Ä«Å×°í¸®ÀÇ Å¬·¡½º
\p{InGreek} Èñ¶ø¾î ºí·ÏÀÇ ¹®ÀÚ (´Ü¼øºí·Ï)
\p{Lu} ´ë¹®ÀÚ (´Ü¼øÄ«Å×°í¸®)
\p{Sc} ÅëÈ­ ±âÈ£
\P{InGreek} Èñ¶ø¾î ºí·Ï ÀÌ¿ÜÀÇ ¹®ÀÚ (ºÎÁ¤)
[\p{L}&&[^\p{Lu}]]  ´ë¹®ÀÚ ÀÌ¿ÜÀÇ ¹®ÀÚ (°¨»ê)
 
°æ°è Á¤±Ô Ç¥Çö ¿£Áø
^ ÇàÀÇ ¼±µÎ
$ ÇàÀÇ ¸»¹Ì
\b ´Ü¾î °æ°è
\B ºñ´Ü¾î °æ°è
\A ÀÔ·ÂÀÇ ¼±µÎ
\G ÀüȸÀÇ ¼º³ÉÀÇ ¸»¹Ì
\Z ¸¶Áö¸·ÁÙ ³¡ ±âÈ£°¡ ÀÖ´Â °æ¿ì´Â ±×°ÍÀ» Á¦¿ÜÇÑ ÀÔ·ÂÀÇ ¸»¹Ì
\z ÀÔ·ÂÀÇ ¸»¹Ì
 
ÃÖÀå ÀÏÄ¡ ¼ö·®ÀÚ
X? X, 1 ¶Ç´Â 0 ȸ
X* X, 0 ȸ ÀÌ»ó
X+ X, 1ȸ ÀÌ»ó
X{n} X, n ȸ
X{n,} X, n ȸÀÌ»ó
X{n, m} X, n ȸÀÌ»ó, m ȸÀÌÇÏ
 
ÃÖ´Ü ÀÏÄ¡ ¼ö·®ÀÚ
X?? X, 1 ¶Ç´Â 0 ȸ
X*? X, 0 ȸ ÀÌ»ó
X+? X, 1ȸ ÀÌ»ó
X{n}? X, n ȸ
X{n,}? X, n ȸÀÌ»ó
X{n, m}? X, n ȸÀÌ»ó, m ȸÀÌÇÏ
 
Ž¿åÀÎ ¼ö·®ÀÚ
X? + X, 1 ¶Ç´Â 0 ȸ
X*+ X, 0 ȸ ÀÌ»ó
X++ X, 1ȸ ÀÌ»ó
X{n}+ X, n ȸ
X{n,}+ X, n ȸÀÌ»ó
X{n, m}+ X, n ȸÀÌ»ó, m ȸÀÌÇÏ
 
³í¸® ¿¬»êÀÚ
XY X Á÷ÈÄ¿¡ Y
X|Y X ¶Ç´Â Y
(X) X, »ó´ë¹æ ÂüÁ¶¸¦ ½Ç½ÃÇÏ´Â Á¤±Ô Ç¥Çö ±×·ì
 
Àü¹æ ÂüÁ¶
\n ¸ÅÄ¡ÇÑ n ¹ø°ÀÇ »ó´ë¹æ ÂüÁ¶¸¦ ½Ç½ÃÇÏ´Â Á¤±Ô Ç¥Çö ±×·ì
 
Àοë
\ Á¤±Ô Ç¥ÇöÀº ¾Æ´ÏÁö¸¸, ´ÙÀ½ÀÇ ¹®ÀÚ¸¦ À̽ºÄÉÀÌÇÁ ÇÏ´Â
\Q Á¤±Ô Ç¥ÇöÀº ¾Æ´ÏÁö¸¸, \E ±îÁöÀÇ ¸ðµç ¹®ÀÚ¸¦ À̽ºÄÉÀÌÇÁ ÇÏ´Â
\E Á¤±Ô Ç¥ÇöÀº ¾Æ´ÏÁö¸¸, \Q·Î °³½ÃµÈ ÀοëÀ» À̽ºÄÉÀÌÇÁ ÇØ
 
Ư¼öÇÑ ±¸¹® (»ó´ë¹æ ÂüÁ¶¸¦ ½Ç½ÃÇÏÁö ¾Ê´Â´Ù)
(? :X) X, »ó´ë¹æ ÂüÁ¶¸¦ ½Ç½ÃÇÏÁö ¾Ê´Â Á¤±Ô Ç¥Çö ±×·ì
(? idmsux-idmsux)   Á¤±Ô Ç¥ÇöÀº ¾Æ´ÏÁö¸¸, ¸ÅÄ¡ Ç÷¡±×ÀÇ ¿Â/¿ÀÇÁ¸¦ ¹Ù²Û´Ù
(? idmsux-idmsux:X)   X, ÁöÁ¤µÈ Ç÷¡±×¸¦ ¿Â/¿ÀÇÁ·Î ÇÑ»ó´ë¹æ ÂüÁ¶¸¦ ½Ç½ÃÇÏÁö ¾Ê´Â Á¤±Ô Ç¥Çö ±×·ì
(? =X) X, ÆøÁ¦·ÎÀÇ ±àÁ¤ ¿¹Ãø
(?!X) X, ÆøÁ¦·ÎÀÇ ºÎÁ¤ ¿¹Ãø
(? <=X) X, ÆøÁ¦·ÎÀÇ ±àÁ¤ ÈÄ Àбâ
(? <! X) X, ÆøÁ¦·ÎÀÇ ºÎÁ¤ ÈÄ Àбâ
(? >X) X, µ¶¸³ÇÑ»ó´ë¹æ ÂüÁ¶¸¦ ½Ç½ÃÇÏÁö ¾Ê´Â Á¤±Ô Ç¥Çö ±×·ì

backslash, À̽ºÄÉÀÌÇÁ ¹× Àοë

backslash ¹®ÀÚ ('\')´Â Àü¼úÀÇ °Ñ(Ç¥)¿¡ Á¤Àǵǰí ÀÖ´Â ±¸¹®À» À̽ºÄÉÀÌÇÁ ÇÕ´Ï´Ù. ¶Ç, ÁöÁ¤ÇÏÁö ¾Ê¾Ò´ø °æ¿ì´Â À̽ºÄÉÀÌÇÁµÇ¾î ÀÖÁö ¾Ê´Ù°í Çؼ®µÇ´Â ij¸¯ÅÍ ¶óÀÎÀ» ÀοëÇÕ´Ï´Ù. ¿¹¸¦ µé¾î Á¤±Ô Ç¥Çö \\ Àº 1°³ÀÇ backslash¿Í ¼º³É ÇØ, \{´Â ¿ÞÂÊ °ýÈ£¿Í ¼º³É ÇÕ´Ï´Ù.

¿µ¹®ÀÚÀÇ Àü¿¡ backslash¸¦ »ç¿ëÇßÀ» ¶§¿¡ ±× ¿µ¹®ÀÚ°¡ À̽ºÄÉÀÌÇÁ ±¸¹®ÀÌ ¾Æ´Ñ °æ¿ì´Â ¿¡·¯°¡ µË´Ï´Ù. ÀÌ·¯ÇÑ ÆÐÅÏÀº Á¤±Ô Ç¥Çö ¾ð¾îÀÇ ÇâÈÄÀÇ È®Àå¿¡ ¿¹¾àµÇ°í ÀÖ½À´Ï´Ù. ¿µ¹®ÀÚ ÀÌ¿ÜÀÇ ¹®ÀÚÀÇ °æ¿ì´Â ±× ¹®ÀÚ°¡ À̽ºÄÉÀÌÇÁ ±¸¹®¿¡ Æ÷ÇÔµÉÁö ¾î¶³Áö¿¡ °ü°è¾øÀÌ, backslash¸¦ ÁöÁ¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.

Java ¾ð¾î »ç¾ç¿¡¼­´Â Java ¿ø½Ã ÄÚµåÀÇ Ä³¸¯ÅÍ ¶óÀÎ ¸®ÅÍ·²¿¡ Æ÷ÇԵǴ backslash´Â Unicode À̽ºÄÉÀÌÇÁµîÀÇ ¹®ÀÚ À̽ºÄÉÀÌÇÁ·Î¼­ À¯È¿ÇÏ´Ù¶ó°í Çؼ®µË´Ï´Ù. ÀÌ ¶§¹®¿¡ backslash°¡ Java ¹ÙÀÌÆ® ÄÚµå ÄÄÆÄÀÏ·¯¿¡ ÀÇÇØ Çؼ®µÇÁö ¾Ê°Ô ÇÏ·Á¸é, Á¤±Ô Ç¥ÇöÀ» ³ªÅ¸³»´Â ij¸¯ÅÍ ¶óÀÎ ¸®ÅÍ·²³»¿¡¼­ backslash¸¦ 2°³ °è¼ÓÇÒ ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î ij¸¯ÅÍ ¶óÀÎ ¸®ÅÍ·² "\b"´Â Á¤±Ô Ç¥ÇöÀ̶ó°í Çؼ®µÇ¸é, ¹é ½ºÆäÀ̽º 1 ¹®ÀÚ¿Í ¼º³É µË´Ï´Ù. ±×·¯³ª, "\\b"´Â ´Ü¾î °æ°è¿Í ¼º³É µË´Ï´Ù. ¶Ç, ij¸¯ÅÍ ¶óÀÎ ¸®ÅÍ·² "\(hello\)" Àº ºÎ´çÇÏ°Ô µÇ¾î, ÄÄÆÄÀϽà ¿¡·¯°¡ ¹ß»ýÇÕ´Ï´Ù. ij¸¯ÅÍ ¶óÀÎ (hello) °ú ¼º³É µÇ·Á¸é, ij¸¯ÅÍ ¶óÀÎ ¸®ÅÍ·² "\\(hello\\)"À» »ç¿ëÇÒ ÇÊ¿ä°¡ ÀÖ½À´Ï´Ù.

¹®ÀÚ Å¬·¡½º

¹®ÀÚ Å¬·¡½º´Â ´Ù¸¥ ¹®ÀÚ Å¬·¡½º³»·Î ÁöÁ¤Çϰųª °áÇÕ ¿¬»êÀÚ (¾Ï¹¬Àû)³ª ±³Â÷ ¿¬»êÀÚ (&&)¸¦ »ç¿ëÇØ ÀÛ¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù . °áÇÕ ¿¬»êÀÚ´Â 1°³ ÀÌ»óÀÇ ¿ÀÆÛ·£µå Ŭ·¡½º¿¡ Æ÷ÇԵǴ ¸ðµç ¹®ÀÚ¸¦ Æ÷ÇÔÇÑ Å¬·¡½º¸¦ ³ªÅ¸³À´Ï´Ù. ±³Â÷ ¿¬»êÀÚ´Â 2°³ÀÇ ¿ÀÆÛ·£µå Ŭ·¡½º¿¡ Æ÷ÇԵǴ ¸ðµç ¹®ÀÚ¸¦ Æ÷ÇÔÇÑ Å¬·¡½º¸¦ ³ªÅ¸³À´Ï´Ù.

¹®ÀÚ Å¬·¡½º ¿¬»êÀÚ´Â ´ÙÀ½ÀÇ ¼ø¼­·Î ¿ì¼± ¼øÀ§°¡ ³ô¾ÆÁý´Ï´Ù.

1     ¸®ÅÍ·² À̽ºÄÉÀÌÇÁ      \x
2     ±×·ìÈ­ [...]
3     ¹üÀ§ a-z
4     °áÇÕ [a-e][i-u]
5     ±³Â÷ [a-z&&[aeiou]]

½ÇÁ¦·Î´Â ´Ù¸¥ ¸ÞŸij¶óũŸ¼¼Æ®´Â ¹®ÀÚ Å¬·¡½ºÀÇ ¿ÜºÎ°¡ ¾Æ´Ï°í ³»ºÎ¿¡ Á¸ÀçÇÏ´Â °Í¿¡ À¯ÀÇÇØ ÁÖ¼¼¿ä. ¿¹¸¦ µé¾î Á¤±Ô Ç¥Çö . ´Â ¹®ÀÚ Å¬·¡½º ³»ºÎ¿¡¼­´Â ±× Ư¼öÇÑ ¹Ì¸¦ ÀÒ½À´Ï´Ù¸¸, Ç¥Çö - Àº ¹üÀ§¸¦ ³ªÅ¸³»´Â ¸ÞŸij¶óũŸ°¡ µË´Ï´Ù.

ÁÙ ³¡ ±âÈ£

¡¸ÁÙ ³¡ ±âÈ£¡¹¶õ ÀÔ·Â ¹®ÀÚ ¼ø¼­ÀÇ ÇàÀÇ ¸»¹Ì¸¦ ÁöÁ¤ÇÒ °æ¿ì¿¡ »ç¿ëÇÏ´Â 1 ¹®ÀÚ ¶Ç´Â 2 ¹®ÀÚÀÇ ¹®ÀÚ ¼ø¼­ÀÔ´Ï´Ù. ´ÙÀ½ÀÇ ¹®ÀÚ°¡ ÁÙ ³¡ ±âÈ£·Î¼­ Àνĵ˴ϴÙ.

UNIX_LINES ¸ðµå°¡ À¯È¿ÇÑ °æ¿ì´Â °³Çà ¹®ÀÚ¸¸ÀÌ ÁÙ ³¡ ±âÈ£·Î¼­ Àνĵ˴ϴÙ.

Á¤±Ô Ç¥Çö . ´Â DOTALL Ç÷¡±×°¡ ÁöÁ¤µÇ¾î ÀÖÁö ¾ÊÀº °æ¿ì, ÁÙ ³¡ ±âÈ£ ÀÌ¿ÜÀÇ ¸ðµç ¹®ÀÚ¿Í ¼º³É ÇÕ´Ï´Ù.

µðÆúÆ®¿¡¼­´Â Á¤±Ô Ç¥Çö ^ ¹× $ ÇÏÇ฻ ±âÈ£¸¦ ¹«½ÃÇØ, ÀÔ·Â ¼ø¼­ ÀüüÀÇ °¢°¢ ¼±µÎ¿Í ¸»¹ÌÀÎ ¸¸Å­ ¼º³É ÇÕ´Ï´Ù. MULTILINE ¸ðµå°¡ È°¼ºÈ­ µÇ¸é, ^´Â ÀÔ·ÂÀÇ ¼±µÎ ¹× ÀÔ·ÂÀÇ ¸»¹Ì¸¦ Á¦¿ÜÇÑ ¸ðµç ÁÙ ³¡ ±âÈ£ÀÇ ÈÄ¿¡ ¼º³É ÇÕ´Ï´Ù. MULTILINE ¸ðµåÀÇ °æ¿ì, $ ÇÏÇ฻ ±âÈ£ÀÇ Á÷Àü, ¶Ç´Â ÀÔ·Â ¼ø¼­ÀÇ ¸»¹Ì¿¡ ¼º³É ÇÕ´Ï´Ù.

Á¤±Ô Ç¥Çö ±×·ì°ú »ó´ë¹æ ÂüÁ¶

»ó´ë¹æ ÂüÁ¶¸¦ ½Ç½ÃÇÏ´Â Á¤±Ô Ç¥Çö ±×·ì¿¡´Â ¿ÞÂÊ¿¡¼­ ¿ìÃøÇâ¿¡ ¿ÞÂÊȯ°ýÈ£¸¦ ¼¼´Â °Í¿¡ÀÇÇØ ¹øÈ£¸¦ ºÙÀÏ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î Ç¥Çö ((A)(B(C)))´Â ´ÙÀ½ÀÇ 4°³ÀÇ ±×·ìÀ¸·Î ºÐ·ùµË´Ï´Ù.

1     ((A)(B(C)))
2     (A)
3     (B(C))
4     (C)

±×·ì 0 Àº Ç×»ó Ç¥Çö Àüü¸¦ ³ªÅ¸³À´Ï´Ù.

»ó´ë¹æ ÂüÁ¶¸¦ ½Ç½ÃÇÏ´Â Á¤±Ô Ç¥Çö ±×·ìÀÌ ÀÌ¿Í °°ÀÌ ºÐ·ùµÇ°í ³ª¼­, ÀÔ·Â ¼ø¼­ÀÇ °¢ ºÎºÐ ¼ø¼­°¡ ÀÌ·¯ÇÑ ±×·ì°ú ¼º³É µÇ¾î ¼º³É ÇÒ ¶§¸¶´Ù ºÎºÐ ¼ø¼­°¡ º¸Á¸µË´Ï´Ù. Á¤±Ô Ç¥Çö ±×·ìÀÇ ºÎºÐ ¼ø¼­´Â Àü¹æ ÂüÁ¶·Î¼­ Ç¥Çö³»¿¡¼­ ³ªÁß¿¡ »ç¿ëÇÒ ¼ö ÀÖ°Ú½À´Ï´Ù. ¶Ç, ¸ÅÄ¡ Á¶ÀÛÀÌ ¿Ï·áÇϸé, Á¤±Ô Ç¥Çö ¿£ÁøÀ¸·ÎºÎÅÍ ²¨³¾ ¼öµµ ÀÖ½À´Ï´Ù.

±×·ì°ú ÀÔ·Â ¼ø¼­°¡ ¼º³É µÇ¸é, ±× ±×·ì°ú ¸¶Áö¸·¿¡ ¼º³É ÇÑ ºÎºÐ ¼ø¼­°¡ Ç×»ó »ó´ë¹æ ÂüÁ¶µË´Ï´Ù. ¼ö·®ÀÚ¸¦ ÁöÁ¤ÇßÀ» °æ¿ì´Â ±×·ìÀÌ Çѹø ´õ Æò°¡µË´Ï´Ù. 2¹ø°ÀÇ Æò°¡°¡ ½ÇÆÐÇßÀ» °æ¿ì¿¡¼­µµ, ±× Àü¿¡ »ó´ë¹æ ÂüÁ¶µÈ °ªÀÌ ÀÖ´Â °æ¿ì´Â ±× °ªÀÌ º¸°ü À¯ÁöµË´Ï´Ù. ¿¹¸¦ µé¾î ij¸¯ÅÍ ¶óÀÎ "aba"¸¦ Ç¥Çö (a(b)? )+ (¿Í)°ú ¼º³É ÇßÀ» °æ¿ì´Â ±×·ì 2 ·Î ¼³Á¤µÈ "b"°¡ º¸°ü À¯ÁöµË´Ï´Ù. »ó´ë¹æ ÂüÁ¶µÈ ¸ðµç ÀÔ·ÂÀº °¢ ¸Å°ªÀÌ ½ÃÀ۵DZâ Àü¿¡ ÆıâµË´Ï´Ù.

(? ±×¸®°í ½ÃÀ۵Ǵ ±×·ìÀº ¼ø¼öÇÑ ¡¸»ó´ë¹æ ÂüÁ¶µÇÁö ¾Ê´Â Á¤±Ô Ç¥Çö¡¹±×·ì¿¡¼­ ÅؽºÆ®¸¦ »ó´ë¹æ ÂüÁ¶ÇÏÁö ¾Ê°í, ±×·ì Àüü¿¡ Ä«¿îÆ® µÇÁö ¾Ê½À´Ï´Ù.

Unicode Áö¿ø

ÀÌ Å¬·¡½º´Â ¡¸Unicode Technical Standard #18: Unicode Regular Expression Guidelines¡¹ (Unicode Å×Å©´ÏÄà ½ºÅÄ´Ùµå No. 18: Unicode Á¤±Ô Ç¥Çö °¡ÀÌµå ¶óÀÎ) ¹×, ¸±¸®½º 2.1 ¡¸Canonical Equivalents¡¹ (Ç¥ÁØ µî°¡)À» ÂüÁ¶ÇϽʽÿÀ.

Java ¿ø½Ã Äڵ忡¼­´Â \u2014 µîÀÇ Unicode escape sequence´Â ¡¸Java ¾ð¾î »ç¾ç¡¹ÀÇ 3.3¿¡ ±Ù°ÅÇØ Ã³¸®µË´Ï´Ù. ÀÌ·¯ÇÑ escape sequence´Â Á¤±Ô Ç¥Çö Æļ­¿¡ ÀÇÇØ Á÷Á¢ ±¸ÇöµÇ±â ¶§¹®¿¡ ÆÄÀÏ ¶Ç´Â Å°º¸µå·ÎºÎÅÍ ÀоîµéÀΠǥÇö ¾È¿¡¼­µµ Unicode À̽ºÄÉÀÌÇÁ¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. Áï, ij¸¯ÅÍ ¶óÀÎ "\u2014"¿Í "\\u2014"´Â µî°¡°¡ ¾Æ´Õ´Ï´Ù¸¸, °°Àº ÆÐÅÏ¿¡ ÄÄÆÄÀÏ µÇ¾î 16 Áø¼ö 0x2014 ¹®ÀÚ¿Í ¼º³É ÇÕ´Ï´Ù.

Unicode ºí·Ï ¹× Ä«Å×°í¸®´Â Perl¿Í °°°Ô \p ¹× \P ±¸¹®À¸·Î ±â¼úÇÕ´Ï´Ù. ÀԷ¿¡ ÇÁ·ÎÆÛƼ prop°¡ Æ÷ÇԵǴ °æ¿ì, \p{prop}´Â ¼º³É ÇÕ´Ï´Ù¸¸, \P{prop}´Â ¼º³É ÇÏÁö ¾Ê½À´Ï´Ù. ºí·Ï¿¡´Â InMongolian¿Í °°ÀÌ, Á¢µÎ»ç In¸¦ ÁöÁ¤ÇÕ´Ï´Ù. Ä«Å×°í¸®¿¡´Â Á¢µÎ»ç Is¸¦ ÁöÁ¤ÇÒ ¼öµµ ÀÖ½À´Ï´Ù. \p{L}¿Í \p{IsL}´Â Unicode ¹®ÀÚÀÇ Ä«Å×°í¸®¸¦ ³ªÅ¸³À´Ï´Ù. ºí·Ï°ú Ä«Å×°í¸®´Â ¹®ÀÚ Å¬·¡½ºÀÇ ³»ºÎ ¹× ¿ÜºÎÀÇ ¾î´À ÂÊ¿¡µµ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

Áö¿ø µÇ°í ÀÖ´Â Ä«Å×°í¸®´Â Character Ŭ·¡½º¿¡¼­ ÁöÁ¤µÈ ¹öÀüÀÇ The Unicode Standard¿¡ ±âÀçµÇ¾î ÀÖ½À´Ï´Ù. Ä«Å×°í¸®¸í¿¡ ´ëÇؼ­´Â Unicode Ç¥ÁØ¿¡ ±ÔÁØ°ú Á¤º¸°¡ Á¤Àǵǰí ÀÖ½À´Ï´Ù. Pattern Áö¿øÇÏ´Â ºí·Ï¸íÀº, UnicodeBlock.forName ¿¡ ÀÇÇØ ¹Þ¾Æµé¿©Á® Á¤ÀǵǴ À¯È¿ÇÑ ºí·Ï¸íÀÔ´Ï´Ù.

methodname ¸Þ¼­µå (ºñÃßõÀÇ ¸Þ¼­µå¸¦ Á¦¿ÜÇÏ´Ù)ÀÎ java.lang.Character boolean¿Í °°°Ô ±â´ÉÇÏ´Â Ä«Å×°í¸®´Â ÁöÁ¤µÈ ÇÁ·ÎÆÛƼ°¡ À̸§ javamethodname¸¦ °¡Áö´Â µ¿ÀÏÇÑ \p{prop} ±¸¹® Àüü·Î »ç¿ë °¡´ÉÇÕ´Ï´Ù.

Perl 5 ¶ó´Â ºñ±³

Pattern ¿£ÁøÀº Perl 5 ·Î °°ÀÌ, Á¤·Ä µÈ ´ëü¿¡ ´ëÇÑ Á¾·¡ÀÇ NFA º£À̽ºÀÇ ¸ÅĪÀ» ½ÇÇàÇÕ´Ï´Ù.

ÀÌ Å¬·¡½º¿¡¼­ Áö¿ø µÇ¾î ÀÖÁö ¾ÊÀº Perl ±¸¹®

ÀÌ Å¬·¡½º¿¡¼­ Áö¿ø µÇ°í ÀÖÁö¸¸, Perl ·Î Áö¿ø µÇ¾î ÀÖÁö ¾ÊÀº ±¸¹®

Perl¿Í ÀÇ Å« Â÷ÀÌÁ¡

Á¤±Ô Ç¥Çö ±¸¹®ÀÇ µ¿ÀÛÀÇ »ó¼¼ÇÑ °Í¿¡ ´ëÇÏ¿©´Â ¡¸Mastering Regular Expressions, 2nd Edition¡¹ (Jeffrey E. F. Friedl Àú, O'Reilly and Associates, 2002 ³â) À» ÂüÁ¶ÇϽʽÿÀ.

µµÀÔµÈ ¹öÀü :
1.4
°ü·Ã Ç׸ñ:
String.split(String, int), String.split(String), Á÷·ÄÈ­ µÈ Çü½Ä

ÇÊµå °³¿ä
static int CANON_EQ
          Ç¥ÁØ µî°¡¸¦ À¯È¿ÇÏ°Ô ÇÕ´Ï´Ù.
static int CASE_INSENSITIVE
          ´ë¹®ÀÚ¿Í ¼Ò¹®ÀÚ¸¦ ±¸º°ÇÏÁö ¾Ê´Â ¸ÅĪÀ» À¯È¿ÇÏ°Ô ÇÕ´Ï´Ù.
static int COMMENTS
          ÆÐÅϳ»¿¡¼­ °ø¹é°ú ÄÚ¸àÆ®¸¦ »ç¿ëÇÒ ¼ö ÀÖµµ·Ï ÇÕ´Ï´Ù.
static int DOTALL
          DOTALL ¸ðµå¸¦ À¯È¿ÇÏ°Ô ÇÕ´Ï´Ù.
static int LITERAL
          ÆÐÅÏÀÇ ¸®ÅÍ·² ±¸¹® ºÐ¼®À» À¯È¿ÇÏ°Ô ÇÕ´Ï´Ù.
static int MULTILINE
          º¹¼öÇà ¸ðµå¸¦ À¯È¿ÇÏ°Ô ÇÕ´Ï´Ù.
static int UNICODE_CASE
          Unicode¿¡ ÁØ°ÅÇÑ ´ë¹®ÀÚ¿Í ¼Ò¹®ÀÚ¸¦ ±¸º°ÇÏÁö ¾Ê´Â ¸ÅĪÀ» À¯È¿ÇÏ°Ô ÇÕ´Ï´Ù.
static int UNIX_LINES
          Unix ¶óÀÎ ¸ðµå¸¦ À¯È¿ÇÏ°Ô ÇÕ´Ï´Ù.
 
¸Þ¼­µå °³¿ä
static Pattern compile (String  regex)
          ÁöÁ¤µÈ Á¤±Ô Ç¥ÇöÀ» ÆÐÅÏ¿¡ ÄÄÆÄÀÏ ÇÕ´Ï´Ù.
static Pattern compile (String  regex, int flags)
          ÁöÁ¤µÈ Ç÷¡±×¸¦ »ç¿ëÇØ, ÁöÁ¤µÈ Á¤±Ô Ç¥ÇöÀ» ÆÐÅÏ¿¡ ÄÄÆÄÀÏ ÇÕ´Ï´Ù.
 int flags ()
          ÀÌ ÆÐÅÏÀÇ ¸ÅÄ¡ Ç÷¡±×¸¦ ¸®ÅÏÇÕ´Ï´Ù.
 Matcher matcher (CharSequence  input)
          ÁöÁ¤µÈ ÀԷ°ú ÀÌ ÆÐÅÏÀ» ¼º³É ÇÏ´Â Á¤±Ô Ç¥Çö ¿£ÁøÀ» ÀÛ¼ºÇÕ´Ï´Ù.
static boolean matches (String  regex, CharSequence  input)
          ÁöÁ¤µÈ Á¤±Ô Ç¥ÇöÀ» ÄÄÆÄÀÏ ÇØ, ÁöÁ¤µÈ ÀԷ°ú ±× Á¤±Ô Ç¥ÇöÀ» ¼º³É ÇÕ´Ï´Ù.
 String pattern ()
          ÀÌ ÆÐÅÏÀÇ ÄÄÆÄÀÏ¿øÀÇ Á¤±Ô Ç¥ÇöÀ» ¸®ÅÏÇÕ´Ï´Ù.
static String quote (String  s)
          ÁöÁ¤µÈ String ¸®ÅÍ·² ÆÐÅÏ String¸¦ ¸®ÅÏÇÕ´Ï´Ù.
 String [] split (CharSequence  input)
          ÀÌ ÆÐÅÏÀÇ ¼º³É¿¡ ±â¹ÝÇØ ÁöÁ¤µÈ ÀÔ·Â ¼ø¼­¸¦ ºÐÇÒÇÕ´Ï´Ù.
 String [] split (CharSequence  input, int limit)
          ÀÌ ÆÐÅÏÀÇ ¼º³É¿¡ ±â¹ÝÇØ ÁöÁ¤µÈ ÀÔ·Â ¼ø¼­¸¦ ºÐÇÒÇÕ´Ï´Ù.
 String toString ()
          ÀÌ ÆÐÅÏÀÇ Ä³¸¯ÅÍ ¶óÀΠǥÇöÀ» ¸®ÅÏÇÕ´Ï´Ù.
 
Ŭ·¡½º java.lang. Object ·ÎºÎÅÍ »ó¼ÓµÈ ¸Þ¼­µå
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

ÇʵåÀÇ »ó¼¼

UNIX_LINES

public static final int UNIX_LINES
Unix ¶óÀÎ ¸ðµå¸¦ À¯È¿ÇÏ°Ô ÇÕ´Ï´Ù.

ÀÌ ¸ðµå¿¡¼­´Â '\n' ÁÙ ³¡ ±âÈ£ ÀÌ¿Ü´Â . , ^, $ µ¿ÀÛ¿¡¼­´Â ÀνĵÇÁö ¾Ê½À´Ï´Ù.

Unix ¶óÀÎ ¸ðµå´Â ¸ÅÀÔ Ç÷¡±× Ç¥Çö (? d)¸¦ »ç¿ëÇØ À¯È¿ÇÏ°Ô ÇÒ ¼öµµ ÀÖ½À´Ï´Ù.

°ü·Ã Ç׸ñ:
Á¤¼ö Çʵ尪

CASE_INSENSITIVE

public static final int CASE_INSENSITIVE
´ë¹®ÀÚ¿Í ¼Ò¹®ÀÚ¸¦ ±¸º°ÇÏÁö ¾Ê´Â ¸ÅĪÀ» À¯È¿ÇÏ°Ô ÇÕ´Ï´Ù.

µðÆúÆ®¿¡¼­´Â ´ë¹®ÀÚ¿Í ¼Ò¹®ÀÚ¸¦ ±¸º°ÇÏÁö ¾Ê´Â ¸ÅĪ¿¡¼­´Â US-ASCII ij¸¯ÅͼÂÀÇ ¹®ÀÚ¸¸ÀÌ ¼º³É ÇÏ´Â °ÍÀ» ÀüÁ¦·Î ÇÏ°í ÀÖ½À´Ï´Ù. Unicode¿¡ ÁØ°ÅÇÑ ´ë¹®ÀÚ¿Í ¼Ò¹®ÀÚ¸¦ ±¸º°ÇÏÁö ¾Ê´Â ¸ÅĪÀ» À¯È¿ÇÏ°Ô ÇÏ·Á¸é, UNICODE_CASE Ç÷¡±×¸¦ ÀÌ Ç÷¡±×¿Í Á¶ÇÕÇØ ÁöÁ¤ÇÕ´Ï´Ù.

´ë¹®ÀÚ¿Í ¼Ò¹®ÀÚ¸¦ ±¸º°ÇÏÁö ¾Ê´Â ¸ÅĪÀº ¸ÅÀÔ Ç÷¡±× Ç¥Çö  (? i)¸¦ »ç¿ëÇØ À¯È¿ÇÏ°Ô ÇÒ ¼öµµ ÀÖ½À´Ï´Ù.

ÀÌ Ç÷¡±×¸¦ ÁöÁ¤Çϸé, ÆÛÆ÷¸Õ½º°¡ Á¶±Ý ÀúÇÏÇÏ´Â °æ¿ì°¡ ÀÖ½À´Ï´Ù.

°ü·Ã Ç׸ñ:
Á¤¼ö Çʵ尪

COMMENTS

public static final int COMMENTS
ÆÐÅϳ»¿¡¼­ °ø¹é°ú ÄÚ¸àÆ®¸¦ »ç¿ëÇÒ ¼ö ÀÖµµ·Ï ÇÕ´Ï´Ù.

ÀÌ ¸ðµå¿¡¼­´Â °ø¹éÀº ¹«½ÃµÇ¾î#·Î ½ÃÀ۵Ǵ ¸ÅÀÔ ÄÚ¸àÆ®´Â ÁÙ ³¡±îÁö ¹«½ÃµË´Ï´Ù.

ÄÚ¸àÆ® ¸ðµå´Â ¸ÅÀÔ Ç÷¡±× Ç¥Çö  (? x)¸¦ »ç¿ëÇØ À¯È¿ÇÏ°Ô ÇÒ ¼öµµ ÀÖ½À´Ï´Ù.

°ü·Ã Ç׸ñ:
Á¤¼ö Çʵ尪

MULTILINE

public static final int MULTILINE
º¹¼öÇà ¸ðµå¸¦ À¯È¿ÇÏ°Ô ÇÕ´Ï´Ù.

º¹¼öÇà ¸ðµå¿¡¼­´Â Ç¥Çö ^ °ú $´Â °¢°¢ ÁÙ ³¡ ±âÈ£ ¶Ç´Â ÀÔ·Â ¼ø¼­ÀÇ ¸»¹ÌÀÇ Á÷ÈÄ ¶Ç´Â Á÷Àü¿¡ ¼º³É ÇÕ´Ï´Ù. µðÆúÆ®¿¡¼­´Â ÀÌ·¯ÇÑ Ç¥ÇöÀº ÀÔ·Â ¼ø¼­ ÀüüÀÇ ¼±µÎ¿Í ¸»¹Ì¿¡¸¸ ¼º³É ÇÕ´Ï´Ù.

º¹¼öÇà ¸ðµå´Â ¸ÅÀÔ Ç÷¡±× Ç¥Çö  (? m)¸¦ »ç¿ëÇØ À¯È¿ÇÏ°Ô ÇÒ ¼öµµ ÀÖ½À´Ï´Ù.

°ü·Ã Ç׸ñ:
Á¤¼ö Çʵ尪

LITERAL

public static final int LITERAL
ÆÐÅÏÀÇ ¸®ÅÍ·² ±¸¹® ºÐ¼®À» À¯È¿ÇÏ°Ô ÇÕ´Ï´Ù.

ÀÌ Ç÷¡±×°¡ °¡¸®Å°´Â °æ¿ì, ÆÐÅÏÀ» ÁöÁ¤ÇÏ´Â ÀԷ ij¸¯ÅÍ ¶óÀÎÀº ¸®ÅÍ·² ¹®ÀÚÀÇ ¼ø¼­·Î¼­ 󸮵˴ϴÙ. ÀÔ·Â ¼ø¼­³»ÀÇ ¸ÞŸij¶óũŸ ¶Ç´Â escape sequence¿¡ Ưº°ÇÑ ¹Ì´Â ºÎ¿©µÇÁö ¾Ê½À´Ï´Ù.

CASE_INSENSITIVE ¹× UNICODE_CASE Ç÷¡±×¸¦ ÀÌ Ç÷¡±×¿Í ÇÔ²² »ç¿ëÇϸé, ¸ÅĪ¿¡ ´ëÇÑ ¿µÇâÀÌ À¯ÁöµË´Ï´Ù. ´Ù¸¥ Ç÷¡±×´Â ºÒÇÊ¿äÇÏ°Ô µË´Ï´Ù.

¸®ÅÍ·² ±¸¹® ºÐ¼®À» À¯È¿ÇÏ°ÔÇϱâ À§ÇÑ ¸ÅÀÔ Ç÷¡±× ¹®ÀÚ´Â ¾ø½À´Ï´Ù.

°ü·Ã Ç׸ñ:
Á¤¼ö Çʵ尪

DOTALL

public static final int DOTALL
DOTALL ¸ðµå¸¦ À¯È¿ÇÏ°Ô ÇÕ´Ï´Ù.

DOTALL ¸ðµå¿¡¼­´Â Ç¥Çö . ÇÏÇ฻ ±âÈ£¸¦ Æ÷ÇÔÇÑ ÀÓÀÇÀÇ ¹®ÀÚ¿¡ ¼º³É ÇÕ´Ï´Ù. µðÆúÆ®¿¡¼­´Â ÀÌ Ç¥ÇöÀº ÁÙ ³¡ ±âÈ£¿¡ ¼º³É ÇÏÁö ¾Ê½À´Ï´Ù.

DOTALL ¸ðµå´Â ¸ÅÀÔ Ç÷¡±× Ç¥Çö  (? s)¸¦ »ç¿ëÇØ À¯È¿ÇÏ°Ô ÇÒ ¼öµµ ÀÖ½À´Ï´Ù (s´Â ¡¸´ÜÀÏÇࡹ¸ðµåÀÇ Mnemonics¿¡¼­ Perl ¿¡¼­´Â DOTALL ¸ðµå·Î ºÒ¸°´Ù).

°ü·Ã Ç׸ñ:
Á¤¼ö Çʵ尪

UNICODE_CASE

public static final int UNICODE_CASE
Unicode¿¡ ÁØ°ÅÇÑ ´ë¹®ÀÚ¿Í ¼Ò¹®ÀÚ¸¦ ±¸º°ÇÏÁö ¾Ê´Â ¸ÅĪÀ» À¯È¿ÇÏ°Ô ÇÕ´Ï´Ù.

ÀÌ Ç÷¡±×¿Í CASE_INSENSITIVE Ç÷¡±×¸¦ µ¿½Ã¿¡ ÁöÁ¤ÇßÀ» °æ¿ì´Â Unicode Ç¥ÁØ¿¡ ÁØ°ÅÇÑ ´ë¹®ÀÚ¿Í ¼Ò¹®ÀÚ¸¦ ±¸º°ÇÏÁö ¾Ê´Â ¸ÅĪÀ» ÇÕ´Ï´Ù. µðÆúÆ®ÀÇ ´ë¹®ÀÚ¿Í ¼Ò¹®ÀÚ¸¦ ±¸º°ÇÏÁö ¾Ê´Â ¸ÅĪ¿¡¼­´Â US-ASCII ij¸¯ÅͼÂÀÇ ¹®ÀÚ¸¸ÀÌ ¼º³É ÇÕ´Ï´Ù.

Unicode¿¡ ÁØ°ÅÇÑ ´ë¹®ÀÚ¿Í ¼Ò¹®ÀÚ¸¦ ±¸º°ÇÏÁö ¾Ê´Â ¸ÅĪÀº ¸ÅÀÔ Ç÷¡±× Ç¥Çö  (? u)¸¦ »ç¿ëÇØ À¯È¿ÇÏ°Ô ÇÒ ¼öµµ ÀÖ½À´Ï´Ù.

ÀÌ Ç÷¡±×¸¦ ÁöÁ¤Çϸé, ÆÛÆ÷¸Õ½º°¡ ÀúÇÏÇÏ´Â °æ¿ì°¡ ÀÖ½À´Ï´Ù.

°ü·Ã Ç׸ñ:
Á¤¼ö Çʵ尪

CANON_EQ

public static final int CANON_EQ
Ç¥ÁØ µî°¡¸¦ À¯È¿ÇÏ°Ô ÇÕ´Ï´Ù.

ÀÌ Ç÷¡±×¸¦ ÁöÁ¤ÇßÀ» ¶§´Â 2°³ÀÇ ¹®ÀÚÀÇ ¿ÏÀüÇÑ Ç¥ÁØ ºÐÇØ°¡ ¼º³É ÇßÀ» °æ¿ì¿¡ ÇÑÁ¤ÇØ, ±×·¯ÇÑ ¹®ÀÚ°¡ ¼º³É ÇÑ´Ù°í º¸ÀÔ´Ï´Ù. ¿¹¸¦ µé¾îÀÌ Ç÷¡±×¸¦ ÁöÁ¤Çϸé, Ç¥Çö "a\u030A"´Â ij¸¯ÅÍ ¶óÀÎ "? "¿¡ ¼º³É ÇÕ´Ï´Ù. µðÆúÆ®ÀÇ ¸ÅĪ¿¡¼­´Â Ç¥ÁØ µî°¡°¡ °í·ÁµÇÁö ¾Ê½À´Ï´Ù.

Ç¥ÁØ µî°¡¸¦ À¯È¿ÇÏ°ÔÇϱâ À§ÇÑ ¸ÅÀÔ Ç÷¡±× ¹®ÀÚ´Â ¾ø½À´Ï´Ù.

ÀÌ Ç÷¡±×¸¦ ÁöÁ¤Çϸé, ÆÛÆ÷¸Õ½º°¡ ÀúÇÏÇÏ´Â °æ¿ì°¡ ÀÖ½À´Ï´Ù.

°ü·Ã Ç׸ñ:
Á¤¼ö Çʵ尪
¸Þ¼­µåÀÇ »ó¼¼

compile

public static Pattern  compile(String  regex)
ÁöÁ¤µÈ Á¤±Ô Ç¥ÇöÀ» ÆÐÅÏ¿¡ ÄÄÆÄÀÏ ÇÕ´Ï´Ù.

ÆĶó¹ÌÅÍ:
regex - ÄÄÆÄÀÏ µÇ´Â Ç¥Çö
¿¹¿Ü:
PatternSyntaxException - Ç¥ÇöÀÇ ±¸¹®ÀÌ ¹«È¿ÀÎ °æ¿ì

compile

public static Pattern  compile(String  regex,
                              int flags)
ÁöÁ¤µÈ Ç÷¡±×¸¦ »ç¿ëÇØ, ÁöÁ¤µÈ Á¤±Ô Ç¥ÇöÀ» ÆÐÅÏ¿¡ ÄÄÆÄÀÏ ÇÕ´Ï´Ù.

ÆĶó¹ÌÅÍ:
regex - ÄÄÆÄÀÏ µÇ´Â Ç¥Çö
flags - ¸ÅÄ¡ Ç÷¡±×. CASE_INSENSITIVE, MULTILINE, DOTALL, UNICODE_CASE, CANON_EQ¸¦ Æ÷ÇÔÇÑ ºñÆ® ¸¶½ºÅ©
¿¹¿Ü:
IllegalArgumentException - Á¤ÀÇµÈ ¸ÅÄ¡ Ç÷¡±×¿¡ ´ëÀÀÇÏÁö ¾Ê´Â ºñÆ®°ªÀÌ flags·Î ¼³Á¤µÇ¾úÀ» °æ¿ì
PatternSyntaxException - Ç¥ÇöÀÇ ±¸¹®ÀÌ ¹«È¿ÀÎ °æ¿ì

pattern

public String  pattern()
ÀÌ ÆÐÅÏÀÇ ÄÄÆÄÀÏ¿øÀÇ Á¤±Ô Ç¥ÇöÀ» ¸®ÅÏÇÕ´Ï´Ù.

¹Ýȯ°ª:
ÀÌ ÆÐÅÏÀÇ ÄÄÆÄÀÏ¿ø

toString

public String  toString()

ÀÌ ÆÐÅÏÀÇ Ä³¸¯ÅÍ ¶óÀΠǥÇöÀ» ¸®ÅÏÇÕ´Ï´Ù. ÀÌ°ÍÀº ÀÌ ÆÐÅÏÀÇ ÄÄÆÄÀÏ¿øÀÇ Á¤±Ô Ç¥ÇöÀÔ´Ï´Ù.

¿À¹ö¶óÀ̵å(override):
Ŭ·¡½º Object ³»ÀÇ toString
¹Ýȯ°ª:
ÀÌ ÆÐÅÏÀÇ Ä³¸¯ÅÍ ¶óÀΠǥÇö
µµÀÔµÈ ¹öÀü :
1.5

matcher

public Matcher  matcher(CharSequence  input)
ÁöÁ¤µÈ ÀԷ°ú ÀÌ ÆÐÅÏÀ» ¼º³É ÇÏ´Â Á¤±Ô Ç¥Çö ¿£ÁøÀ» ÀÛ¼ºÇÕ´Ï´Ù.

ÆĶó¹ÌÅÍ:
input - ¸ÅÄ¡µÇ´Â ¹®ÀÚ ¼ø¼­
¹Ýȯ°ª:
ÀÌ ÆÐÅÏÀÇ »õ·Î¿î Á¤±Ô Ç¥Çö ¿£Áø

flags

public int flags()
ÀÌ ÆÐÅÏÀÇ ¸ÅÄ¡ Ç÷¡±×¸¦ ¸®ÅÏÇÕ´Ï´Ù.

¹Ýȯ°ª:
ÀÌ ÆÐÅÏÀÌ ÄÄÆÄÀÏ µÇ¾úÀ» ¶§¿¡ ÁöÁ¤µÈ ¸ÅÄ¡ Ç÷¡±×

matches

public static boolean matches(String  regex,
                              CharSequence  input)
ÁöÁ¤µÈ Á¤±Ô Ç¥ÇöÀ» ÄÄÆÄÀÏ ÇØ, ÁöÁ¤µÈ ÀԷ°ú ±× Á¤±Ô Ç¥ÇöÀ» ¼º³É ÇÕ´Ï´Ù.

ÀÌ ¸Þ¼­µå¸¦ ´ÙÀ½ÀÇ Çü½Ä¿¡¼­ È£ÃâÇϸé, »ó±âÀÇ µ¿ÀÛÀ» ÇÕ´Ï´Ù.

 Pattern.matches(regex, input);
»ó±âÀÇ ¸Þ¼­µå´Â ´ÙÀ½ÀÇ Ç¥Çö°ú °°°Ô µ¿ÀÛÇÕ´Ï´Ù.
 Pattern.compile(regex). matcher(input). matches()

ÆÐÅÏÀ» ¹Ýº¹ÇØ »ç¿ëÇÏ´Â °æ¿ì´Â ±× ÆÐÅÏÀ» ÄÄÆÄÀÏÀÇÇØ ÀçÀÌ¿ëÇÑ (ºÐ)ÆíÀÌ, ¸Åȸ ÀÌ ¸Þ¼­µå¸¦ È£ÃâÇÏ´Â °Íº¸´Ùµµ È¿À²ÀûÀÔ´Ï´Ù.

ÆĶó¹ÌÅÍ:
regex - ÄÄÆÄÀÏ µÇ´Â Ç¥Çö
input - ¸ÅÄ¡µÇ´Â ¹®ÀÚ ¼ø¼­
¿¹¿Ü:
PatternSyntaxException - Ç¥ÇöÀÇ ±¸¹®ÀÌ ¹«È¿ÀÎ °æ¿ì

split

public String [] split(CharSequence  input,
                      int limit)
ÀÌ ÆÐÅÏÀÇ ¼º³É¿¡ ±â¹ÝÇØ ÁöÁ¤µÈ ÀÔ·Â ¼ø¼­¸¦ ºÐÇÒÇÕ´Ï´Ù.

ÀÌ ¸Þ¼­µå·ÎºÎÅÍ ¸®ÅÏµÈ ¹è¿­Àº ÀÔ·Â ¼ø¼­ÀÇ ºÎºÐ ij¸¯ÅÍ ¶óÀÎÀ¸·Î ±¸¼ºµË´Ï´Ù. ÀÌ·¯ÇÑ ºÎºÐ ij¸¯ÅÍ ¶óÀÎÀº ÀÌ ÆÐÅÏ°ú ¼º³É ÇÏ´Â ´Ù¸¥ ºÎºÐ ¼ø¼­¿¡ ÀÇÇØ ºÐÇÒµÈ Ä³¸¯ÅÍ ¶óÀÎÀΰ¡ ÀÔ·Â ¼ø¼­ÀÇ Á¾·á¿¡ ÀÇÇØ ºÐÇÒµÈ Ä³¸¯ÅÍ ¶óÀÎÀÔ´Ï´Ù. ¹è¿­³»ÀÇ ºÎºÐ ij¸¯ÅÍ ¶óÀÎÀº ÀÔ·Â ¼ø¼­³»¿¡¼­ ¹ß»ýÇÑ Â÷·Ê·Î ÁÙÁö¾î ÀÖ½À´Ï´Ù. ÀÌ ÆÐÅÏÀÌ ÀÔ·Â ¼ø¼­ÀÇ ºÎºÐ ¼ø¼­¿¡ ¼º³É ÇÏÁö ¾Ê´Â °æ¿ì, ¸®ÅÏµÈ ¹è¿­Àº 1°³ÀÇ ¿ä¼Ò, Áï ij¸¯ÅÍ ¶óÀÎ Çü½ÄÀÇ ÀÔ·Â ¼ø¼­¸¸À¸·Î ±¸¼ºµË´Ï´Ù.

limit ÆĶó¹ÌÅÍ´Â ÀÌ ÆÐÅÏÀÇ Àû¿ë ȸ¼ö, Áï, ¸®ÅÏµÈ ¹è¿­ÀÇ ±æÀ̸¦ Á¦¾îÇÕ´Ï´Ù. Á¦ÇÑ n°¡ Á¦·Îº¸´Ù Å« °æ¿ì, ÀÌ ÆÐÅÏÀº n - 1ȸ¾Æ·¡ÀÇ È¸¼ö°¡ Àû¿ëµÇ¾î ¹è¿­ÀÇ ±æÀÌ´Â n ÀÌÇÏ°¡ µË´Ï´Ù. ¹è¿­ÀÇ ¸¶Áö¸· ¿£Æ®¸®¿¡´Â ¸¶Áö¸·¿¡ ¼º³É ÇÑ ´Ü¶ô ¹®ÀÚ ÀÌÈÄÀÇ ÀÔ·Â ¼ø¼­°¡ ¸ðµÎ Æ÷ÇԵ˴ϴÙ. n°¡ À߸øµÈ °ª ÀÇ °æ¿ì, ÀÌ ÆÐÅÏÀÇ Àû¿ë ȸ¼ö¿Í ¹è¿­ÀÇ ±æÀÌ´Â Á¦ÇѵÇÁö ¾Ê½À´Ï´Ù. n°¡ Á¦·ÎÀÇ °æ¿ì, ÀÌ ÆÐÅÏÀÇ Àû¿ë ȸ¼ö¿Í ¹è¿­ÀÇ ±æÀÌ´Â Á¦Çѵ˴ϴٸ¸, ÈļÓÀÇ ºñ¾îÀִ ij¸¯ÅÍ ¶óÀÎÀº ÆıâµË´Ï´Ù.

¿¹¸¦ µé¾î ÀÔ·Â ¼ø¼­ "boo:and:foo"´Â ÀÌ·¯ÇÑ ÆĶó¹ÌÅÍ¿¡ ÀÇÇØ ´ÙÀ½°ú °°ÀÌ ºÐÇҵ˴ϴÙ.

Á¤±Ô Ç¥Çö     

Á¦ÇÑ     

°á°ú     

: 2 { "boo", "and:foo" }
: 5 { "boo", "and", "foo" }
: -2 { "boo", "and", "foo" }
o 5 { "b", "", ":and:f", "", "" }
o -2 { "b", "", ":and:f", "", "" }
o 0 { "b", "", ":and:f" }

ÆĶó¹ÌÅÍ:
input - ºÐÇҵǴ ¹®ÀÚ ¼ø¼­
limit - °á°úÀÇÀÇÇØ ±ÍÀÇÄ¡ (Àü¼ú´ë·Î)
¹Ýȯ°ª:
ij¸¯ÅÍ ¶óÀÎÀÇ ¹è¿­. ÀÌ ÆÐÅÏÀÇ ¼º³É¿¡ ±Ù°ÅÇØ ºÐÇÒµÈ ÀÔ·Â ¼ø¼­·ÎºÎÅÍ ÀÛ¼ºµÈ´Ù

split

public String [] split(CharSequence  input)
ÀÌ ÆÐÅÏÀÇ ¼º³É¿¡ ±â¹ÝÇØ ÁöÁ¤µÈ ÀÔ·Â ¼ø¼­¸¦ ºÐÇÒÇÕ´Ï´Ù.

ÀÌ ¸Þ¼­µå´Â limit Àμö¸¦ Á¦·Î·ÎÀÇÇØ split ¸Þ¼­µå¸¦ È£ÃâÇßÀ» °æ¿ì¿Í °°°Ô ÀÔ·Â ¼ø¼­¸¦ ºÐÇÒÇÕ´Ï´Ù. Áï, ¸®ÅÏµÈ ¹è¿­¿¡´Â ÈļÓÀÇ ºñ¾îÀִ ij¸¯ÅÍ ¶óÀÎÀº Æ÷ÇÔµÇÁö ¾Ê½À´Ï´Ù.

¿¹¸¦ µé¾î ÀÔ·Â ¼ø¼­ "boo:and:foo"´Â ÀÌ·¯ÇÑ Ç¥Çö¿¡ ÀÇÇØ ´ÙÀ½°ú °°ÀÌ ºÐÇҵ˴ϴÙ.

Á¤±Ô Ç¥Çö     

°á°ú

: { "boo", "and", "foo" }
o { "b", "", ":and:f" }

ÆĶó¹ÌÅÍ:
input - ºÐÇҵǴ ¹®ÀÚ ¼ø¼­
¹Ýȯ°ª:
ij¸¯ÅÍ ¶óÀÎÀÇ ¹è¿­. ÀÌ ÆÐÅÏÀÇ ¼º³É¿¡ ±Ù°ÅÇØ ºÐÇÒµÈ ÀÔ·Â ¼ø¼­·ÎºÎÅÍ ÀÛ¼ºµÈ´Ù

quote

public static String  quote(String  s)
ÁöÁ¤µÈ String ¸®ÅÍ·² ÆÐÅÏ String¸¦ ¸®ÅÏÇÕ´Ï´Ù.

ÀÌ ¸Þ¼­µå´Â ¸®ÅÍ·² ÆÐÅÏÀÎ°Í °°ÀÌ Ä³¸¯ÅÍ ¶óÀÎ s¿¡ ¼º³É ÇÏ´Â Pattern ÀÛ¼º¿¡ »ç¿ë °¡´ÉÇÑ String¸¦ »ý¼ºÇÕ´Ï´Ù.

ÀÔ·Â ¼ø¼­³»ÀÇ ¸ÞŸij¶óũŸ ¶Ç´Â escape sequence¿¡ Ưº°ÇÑ ¹Ì´Â ¾ø½À´Ï´Ù.

ÆĶó¹ÌÅÍ:
s - ¸®ÅÍ·²È­Çϴ ij¸¯ÅÍ ¶óÀÎ
¹Ýȯ°ª:
¸®ÅÍ·² ij¸¯ÅÍ ¶óÀΠġȯ
µµÀÔµÈ ¹öÀü :
1.5

JavaTM 2 Platform
Standard Ed. 5.0

Copyright 2004 Sun Microsystems, Inc. All rights reserved. Use is subject to license terms . Documentation Redistribution Policy µµ ÂüÁ¶ÇϽʽÿÀ.