RegExMatch() [v1.0.45+]

¹®ÀÚ¿­¿¡ ÆÐÅÏÀÌ ´ã°Ü ÀÖ´ÂÁö ¾Ë¾Æ³À´Ï´Ù (Á¤±Ô Ç¥Çö½Ä).

FoundPos := RegExMatch(Haystack, NeedleRegEx [, UnquotedOutputVar = "", StartingPosition = 1])

¸Å°³º¯¼ö

¿ªÁÖ : Á¤±ÔÇ¥Çö½ÄÀ¸·Î ¸ñÇ¥ ¹®ÀÚ¿­¿¡¼­ ÆÐÅÏÀ» ã´Â °ÍÀ»
°ÇÃÊ´õ¹Ì(Haystack)¿¡¼­ ¹Ù´Ã(NeedleRegEx)À» ã´Â °Í¿¡ºñÀ¯ÇÔ.

FoundPos

RegExMatch()´Â ¹®ÀÚ¿­ Haystack¿¡ NeedleRegEx°¡ ³ªÅ¸³­ °¡Àå ¿ÞÂÊÀÇ À§Ä¡¸¦ µ¹·ÁÁÝ´Ï´Ù. À§Ä¡°¡ 1À̸é ù ¹ø° ¹®ÀÚÀÔ´Ï´Ù. ÆÐÅÏÀÌ ¹ß°ßµÇÁö ¾ÊÀ¸¸é 0À» µ¹·ÁÁÝ´Ï´Ù. ¿¡·¯°¡ ÀϾ¸é (NeedleRegEx ¾È¿¡¼­ ±¸¹® ¿¡·¯°¡ ÀϾ¸é), ºó ¹®ÀÚ¿­ÀÌ ¹ÝȯµË´Ï´Ù. ErrorLevelÀº 0 ´ë½Å¿¡ ¾Æ·¡ÀÇ °ª Áß Çϳª°¡ »ç¿ëµË´Ï´Ù.

Haystack

³»¿ëÀ» °Ë»öÇÒ ¹®ÀÚ¿­.

NeedleRegEx

°Ë»ö ÇÒ ÆÐÅÏ, ÆÞ-ȣȯÀÇ Á¤±Ô Ç¥Çö½ÄÀÔ´Ï´Ù (PCRE). ÆÐÅÏÀÇ ¿É¼ÇÀº ¹®ÀÚ¿­ óÀ½¿¡ Æ÷ÇÔÇØ¾ß ÇÏ°í ±× ´ÙÀ½¿¡ ´Ý´Â ¹Ý°ýÈ£°¡ µû¶ó ¿É´Ï´Ù. ¿¹¸¦ µé¾î, ÆÐÅÏ "i)abc.*123"´Â ´ë¼Ò¹®ÀÚ ºñ±¸ºÐ ¿É¼ÇÀ» ÄÑ°í "abc"¸¦ °Ë»ö ÇÑ ´ÙÀ½, 0°³ ÀÌ»óÀÇ ¹®ÀÚ¸¦ °Ë»öÇÏ°í, ´ÙÀ½¿¡ "123"À» °Ë»öÇÕ´Ï´Ù. ¿É¼ÇÀÌ ¾ø´Ù¸é, ")"´Â ¼±ÅÃÀûÀÔ´Ï´Ù; ¿¹¸¦ µé¾î, ")abc"´Â "abc"¿Í µ¿µîÇÕ´Ï´Ù.

UnquotedOutputVar

Mode 1 (±âº»°ª): OutputVar´Â ÇÑ µû¿ÈÇ¥¸¦ Á¦°ÅÇÑ º¯¼öÀÔ´Ï´Ù. ±× ¾È¿¡´Ù Àüü ÆÐÅÏ¿¡ ºÎÇÕÇÑ Haystack ºÎºÐÀ» ÀúÀåÇÕ´Ï´Ù. ÆÐÅÏÀÌ ¹ß°ßµÇÁö ¾ÊÀ¸¸é (Áï, ÇÔ¼ö°¡ 0À» µ¹·ÁÁÖ¸é), ÀÌ º¯¼ö¿Í ¸ðµç ¹è¿­ ¿ø¼Ò´Â ºñ¿öÁý´Ï´Ù.

³ªÆ÷ ºÎÆÐÅÏÀÌ NeedleRegEx ¾È¿¡ Á¸ÀçÇϸé, ±×¿¡ ºÎÇÕÇÑ °ÍµéÀº ¹ÙÅÁ À̸§ÀÌ OutputVarÀÎ ÀÇ»ç-¹è¿­¿¡ ÀúÀåµË´Ï´Ù. ¿¹¸¦ µé¾î, º¯¼öÀÇ À̸§ÀÌ Match¶ó¸é, ù ºÎÆÐÅÏ¿¡ ºÎÇÕÇÏ´Â ºÎ¹®ÀÚ¿­Àº Match1¿¡ ÀúÀåµÇ°í, µÎ ¹ø°´Â Match2¿¡ ÀúÀåµË´Ï´Ù, µîµî. ÀÌ¿¡ ´ëÇÑ ¿¹¿Ü´Â À̸§ ºÙÀÎ ºÎÆÐÅÏÀÔ´Ï´Ù: ¼ýÀÚ°¡ ¾Æ´Ï¶ó À̸§À¸·Î ÀúÀåµË´Ï´Ù. ¿¹¸¦ µé¾î, À̸§ºÙÀÎ ºÎÆÐÅÏ"(?P<Year>\d{4})" ¿¡ ºÎÇÕÇÑ ºÎ¹®ÀÚ¿­Àº MatchYear¿¡ ÀúÀåµË´Ï´Ù. ƯÁ¤ÇÑ ºÎÆÐÅÏÀÌ ÀüÇô ºÎÇÕÇÏÁö ¾ÊÀ¸¸é (Áï, ÇÔ¼ö°¡ 0À» µ¹·ÁÁÖ¸é), ±×¿¡ »óÀÀÇÏ´Â º¯¼ö´Â ºñ¿öÁý´Ï´Ù.

ÇÔ¼ö ¾È¿¡¼­, Áö¿ªÀÌ ¾Æ´Ñ Àü¿ª ÀÇ»ç ¹è¿­À» »ý¼ºÇÏ·Á¸é, ÀÇ»ç ¹è¿­ÀÇ ¹ÙÅÁ À̸§À» »ç¿ëÇϱâ Àü¿¡ (¿¹, Match) Àü¿ª º¯¼ö·Î ¼±¾ð ÇϽʽÿÀ. Àü¿ª-°£ÁÖ ÇÔ¼ö¿¡ ´ëÇÏ¿© ±× ¹Ý´ëµµ ¸¶Âù°¡ÁöÀÔ´Ï´Ù. ±×·¸Áö¸¸, ÈçÇÑ È¥¶õÀÇ ±Ù¿ø ¶§¹®¿¡ °¢ ¿ø¼Ò¸¶´Ù ¼±¾ðÇÒ ÇÊ¿ä°¡ ÀÖ´Â °æ¿ìµµ ÀÖ½À´Ï´Ù.

Mode 2 (À§Ä¡¿Í ±æÀÌ): ´ë¹®ÀÚ P°¡ RegExÀÇ ¿É¼Ç¿¡ Á¸ÀçÇϸé -- ¿¹¸¦ µé¾î "P)abc.*123" --Àüü ÆÐÅÏ ºÎÇÕÀÇ ±æÀÌ°¡ OutputVar¿¡ ÀúÀåµË´Ï´Ù (ºÎÇÕÀÌ ¾øÀ¸¸é 0). ³ªÆ÷ ºÎÆÐÅÏÀÌ Á¸ÀçÇϸé, ±× À§Ä¡¿Í ±æÀÌ°¡ µÎ °³ÀÇ ÀÇ»ç-¹è¿­¿¡ ÀúÀåµË´Ï´Ù: OutputVarPos ±×¸®°í OutputVarLen. ¿¹¸¦ µé¾î, º¯¼öÀÇ ¹ÙÅÁ À̸§ÀÌ Match¶ó¸é, ù ºÎÆÐÅÏ ºÎÇÕÀÇ À§Ä¡°¡ 1-±â¹ÝÀ¸·Î MatchPos1¿¡ ÀúÀåµÇ°í, ±×ÀÇ ±æÀÌ´Â MatchLen1¿¡ ÀúÀåµË´Ï´Ù (ºÎÆÐÅÏ¿¡ ºÎÇÕÀÌ ¾ø°Å³ª ÇÔ¼ö°¡ 0À» µ¹·ÁÁÖ¸é 0ÀÌ ÀúÀåµË´Ï´Ù). ÀÌ¿¡ ´ëÇÑ ¿¹¿Ü´Â À̸§ºÙÀÎ ºÎÆÐÅÏÀÔ´Ï´Ù: ¼ýÀÚ°¡ ¾Æ´Ï¶ó À̸§À¸·Î ÀúÀåµË´Ï´Ù (¿¹, MatchPosYear ±×¸®°í MatchLenYear).

Mode 3 (ÀÏÄ¡ °´Ã¼) [v1.1.05+]: ´ë¹®ÀÚ O°¡ RegEx ¿É¼Ç¿¡ Á¸ÀçÇϸé -- ¿¹¸¦ µé¾î "O)abc.*123" -- ÀÏÄ¡ °´Ã¼°¡ UnquotedOutputVar¿¡ ÀúÀåµË´Ï´Ù. ÀÌ °´Ã¼¸¦ »ç¿ëÇϸé Àüü ºÎÇÕ°ú ³ªÆ÷µÈ ºÎÆÐÅÏ °¢°¢ÀÇ À§Ä¡¿Í ±æÀÌ ±×¸®°í °ªÀ» ¿­¶÷ÇÒ ¼ö ÀÖ½À´Ï´Ù.

StartingPosition

StartingPositionÀ» »ý·«ÇÏ¸é ±âº»°ªÀº 1ÀÔ´Ï´Ù (HaystackÀÇ ½ÃÀÛ). ±×·¸Áö ¾ÊÀ¸¸é, 2¸¦ ÁöÁ¤ÇØ µÎ ¹ø° ¹®ÀÚ¿¡¼­ ½ÃÀÛÇϰųª 3À» ÁöÁ¤ÇØ ¼¼ ¹ø° ¹®ÀÚ¿¡¼­ ½ÃÀÛÇÒ ¼ö ÀÖ½À´Ï´Ù. µîµî. StartingPositionÀÌ HaystackÀÇ ±æÀ̸¦ ³Ñ¾î °¡¸é, °Ë»öÀº Haystack ³¡ÀÇ ºó ¹®ÀÚ¿­¿¡¼­ ½ÃÀÛÇÕ´Ï´Ù (ÀüÇüÀûÀ¸·Î ºÎÇÕ °á°ú°¡ ¾ø½À´Ï´Ù).

StartingPositionÀÌ º¸´Ù ÀÛÀ¸¸é, Haystack ³¡À¸·ÎºÎÅÍÀÇ »ó´ë°Å¸®°í °£ÁÖÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, 0Àº ¸¶Áö¸· ¹®ÀÚ¿¡¼­ ½ÃÀÛÇÏ°í, -1Àº ¸¶Áö¸· ¹®ÀÚ ¹Ù·Î ¾Õ¿¡¼­ ½ÃÀÛÇÕ´Ï´Ù. StartingPositionÀÌ HaystackÀÇ ¿ÞÂÊ ³¡À» ³Ñ¾î¼­ ½ÃµµÇϸé, ¸ðµç HaystackÀ» °Ë»öÇÕ´Ï´Ù.

StartingPositionÀÇ °ª¿¡ »ó°ü¾øÀÌ, ¹Ýȯ °ªÀº ¾ðÁ¦³ª HaystackÀÇ Ã¹ ¹®ÀÚ¿¡ »ó´ëÀûÀÔ´Ï´Ù. ¿¹¸¦ µé¾î, "123abc789"¿¡¼­ "abc"ÀÇ À§Ä¡´Â ¾ðÁ¦³ª 4ÀÔ´Ï´Ù.

ErrorLevel

[v1.1.04+] ÀÌ ÇÔ¼ö´Â ½ÇÆнà ¿¹¿Ü¸¦ ´øÁú ¼ö ÀÖ½À´Ï´Ù ("ºÎÇÕ ¾øÀ½"°ú È¥µ¿ÇÏÁö ¸¶½Ê½Ã¿À). ´õ ÀÚ¼¼ÇÑ Á¤º¸´Â ½ÇÇà½Ã°£ ¿¡·¯¸¦ ÂüÁ¶ÇϽʽÿÀ.

ErrorLevelÀº ´ÙÀ½ °ªÁß Çϳª°¡ ¼³Á¤µË´Ï´Ù:

Options

¼ö½ÄÀÚ¿¡ °üÇؼ­ Options¸¦ ÂüÁ¶ÇϽʽÿÀ. ¿¹¸¦ µé¾î "i)abc"¿Í °°Àº °æ¿ì, ÆÐÅÏ "abc"¿¡ ´ë¼Ò¹®ÀÚ ±¸ºÐÀ» ²ü´Ï´Ù.

Match Object v1.1.05+

´ë¹®ÀÚ O°¡ RegEx ¿É¼Ç¿¡ Á¸ÀçÇϸé, ÀÏÄ¡ °´Ã¼°¡ UnquotedOutputVar¿¡ ÀúÀåµË´Ï´Ù. ÀÌ °´Ã¼´Â ´ÙÀ½°ú °°Àº Ư¼ºÀ» ¼ÒÀ¯ÇÕ´Ï´Ù:

Match.Pos(N): ³ªÆ÷µÈ ºÎÆÐÅÏ ¶Ç´Â Àüü ºÎÇÕÀÇ À§Ä¡¸¦ µ¹·ÁÁÝ´Ï´Ù.

Match.Len(N): ³ªÆ÷µÈ ºÎÆÐÅÏ ¶Ç´Â Àüü ºÎÇÕÀÇ ±æÀ̸¦ µ¹·ÁÁÝ´Ï´Ù.

Match.Value(N): ³ªÆ÷µÈ ºÎÆÐÅÏ ¶Ç´Â Àüü ºÎÇÕÀ» µ¹·ÁÁÝ´Ï´Ù.

Match.Name(N): ÁÖ¾îÁø ºÎÆÐÅÏÀÇ À̸§À» µ¹·ÁÁÝ´Ï´Ù

Match.Count(): ºÎÆÐÅÏÀÇ Àüü °³¼ö¸¦ µ¹·ÁÁÝ´Ï´Ù.

Match.Mark(): ¸¶Áö¸·À¸·Î ¸¸³­ (*MARK:NAME)ÀÇ NAMEÀ» µ¹·ÁÁÝ´Ï´Ù.

Match[N]: NÀÌ 0À̰ųª À¯È¿ÇÑ ºÎÆÐÅÏ ¹øÈ£ ¶Ç´Â À̸§À̶ó¸é, ÀÌ°ÍÀº Match.Value(N)°ú µ¿µîÇÕ´Ï´Ù. ±×·¸Áö ¾ÊÀ¸¸é, NÀº À§ÀÇ Æ¯¼ºÀÇ À̸§ Áß ÇϳªÀÏ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, Match["Pos"] ±×¸®°í Match.Pos´Â Match.Pos()¿Í µ¿µîÇÕ´Ï´Ù. ´Ü, À̸§ÀÌ "Pos"ÀÎ ºÎÆÐÅÏÀÌ Á¸ÀçÇÏ¸é ¿¹¿ÜÀÔ´Ï´Ù. ÀÌ °æ¿ì Match.Value("Pos")¿Í µ¿µîÇÕ´Ï´Ù.

Match.N: À§¿Í °°½À´Ï´Ù. ´Ü, NÀÌ ÀοëºÎÈ£¸¦ ºÙÀÌÁö ¾ÊÀº À̸§À̰ųª ¼ýÀÚÀÎ °æ¿ì´Â ¿¹¿ÜÀÔ´Ï´Ù.

À§ÀÇ ¸ðµç Ư¼º¿¡ ´ëÇÏ¿©, NÀº ´ÙÀ½ Áß Çϳª°¡ µÉ ¼ö ÀÖ½À´Ï´Ù:

NÀ» ÁöÁ¤ÇÏ¸é ¹Ý°ýÈ£ () ´ë½Å¿¡ °¢°ýÈ£ []¸¦ »ç¿ëÇصµ µË´Ï´Ù.

¼öÇ༺´É

¹®ÀÚ¿­ ¾È¿¡¼­ °£´ÜÇÑ ºÎ¹®ÀÚ¿­À» °Ë»öÇÏ·Á¸é InStr()À» »ç¿ëÇϽʽÿÀ. ¿Ö³ÄÇϸé RegExMatch()º¸´Ù ´õ ºü¸£±â ¶§¹®ÀÔ´Ï´Ù.

¼öÇ༺´ÉÀ» °³¼±Çϱâ À§ÇÏ¿©, ÀÚÁÖ »ç¿ëµÇ´Â Á¤±Ô Ç¥Çö½Ä 100°³¸¦ ¸Þ¸ð¸®¿¡ (ÄÄÆÄÀÏµÈ ÇüÅ·Î) ij½¬ÇÕ´Ï´Ù.

¿¬±¸ ¿É¼Ç (S)À¸·Î Á¾Á¾ (¿¹¸¦ µé¾î ȸµ¹ÀÌ ¾È¿¡¼­) ¸¹ÀÌ »ç¿ëµÇ´Â Á¤±Ô Ç¥Çö½ÄÀÇ ¼öÇ༺´ÉÀ» °³¼±½Ãų ¼ö ÀÖ½À´Ï´Ù.

³íÆò

ºÎÆÐÅÏ¿¡ À̸§À» ºÎ¿©ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î ÆÐÅÏ "(?P<Year>\d{4})"¿¡ ´Ü¾î Year°¡ ºÎ¿© µÇ¾î ÀÖ½À´Ï´Ù. À̸§Àº ÃÖ´ë 32°³ÀÇ ¾ËÆĺª¼ýÀÚ¿Í ¹ØÁÙ ¹®ÀÚ·Î ±¸¼ºµÇ´Ï´Ù. ´ÙÀ½ Á¦ÇÑÀº "O" (ÀÏÄ¡ °´Ã¼) ¸ðµå¿¡ Àû¿ëµÇÁö ¾Ê½À´Ï´Ù. À̸§ ºÙÀÎ ºÎÆÐÅϵµ RegEx ¿¬»ê ÀÚü¿¡¼­ ¼ýÀÚ·Î ÂüÁ¶ÇÒ ¼ö ÀÖÁö¸¸ (¿¹, \1Àº ù ³ªÆ÷ ÆÐÅÏ¿¡ ½ÇÁ¦·Î ºÎÇÕÇÑ ¹®ÀÚ¿­À» °¡¸®Å°´Â ¿ªÂüÁ¶ÀÔ´Ï´Ù), (¼ýÀÚ°¡ ¾Æ´Ï¶ó) À̸§À¸·Î¸¸ Ãâ·Â ÀÇ»ç-º¯¼ö¿¡ ÀúÀåµË´Ï´Ù. ¿¹¸¦ µé¾î, "Year"°¡ ù ¹ø° ºÎÆÐÅÏÀ̶ó¸é, OutputVarYearÀº ±× ºÎÇÕÇÑ ºÎ¹®ÀÚ¿­ÀÌ ¼³Á¤µÇÁö¸¸, OutputVar1Àº ÀüÇô ¹Ù²îÁö ¾Ê½À´Ï´Ù (ÀÌÀü °ªÀ» ±×´ë·Î À¯ÁöÇÕ´Ï´Ù). ±×·¸Áö¸¸, À̸§¾ø´Â ºÎÆÐÅÏÀÌ "Year" ´ÙÀ½¿¡ ÀϾ¸é, ±×°ÍÀº OutputVar1ÀÌ ¾Æ´Ï¶ó OutputVar2¿¡ ÀúÀåµË´Ï´Ù.

abc123¿Í °°ÀÌ ´ëºÎºÐÀÇ ¹®ÀÚ´Â Á¤±Ô Ç¥Çö½Ä ¾È¿¡ ±âÈ£ ±×´ë·Î »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¸Áö¸¸, \.*?+[{|()^$¿Í °°Àº ¹®ÀÚ´Â ¹Ýµå½Ã ¾Õ¿¡ ¿ª»ç¼±À» ¹èÄ¡ÇØ¾ß ¹®ÀÚ ±×´ë·Î º¸¿©Áö°Ô µË´Ï´Ù. ¿¹¸¦ µé¾î, \.´Â ¹®ÀÚ ±×´ë·ÎÀÇ Á¡ÀÌ°í \\´Â ±âÈ£ ±×´ë·ÎÀÇ ¿ª»ç¼±ÀÔ´Ï´Ù. ÇǽÅÀº \Q...\EÀ» »ç¿ëÇÏ¿© ´ë½ÅÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î: \QLiteral Text\E.

Á¤±Ô Ç¥Çö½Ä ¾È¿¡¼­, ÅÇ°ú »õÁÙ °°Àº Ư¼ö ¹®ÀÚµéÀº ¾×¼¾Æ® (`) ¶Ç´Â ¿ª»ç¼± (\)À¸·Î ÇǽŽÃų ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦ µé¾î, `t´Â \t¿Í °°½À´Ï´Ù. ´Ü, x ¿É¼ÇÀÌ »ç¿ëµÈ °æ¿ì´Â ¿¹¿ÜÀÔ´Ï´Ù.

Á¤±Ô Ç¥Çö½ÄÀÇ ±âº»À» ¹è¿ì·Á¸é (¶Ç´Â ÆÐÅÏ ±¸¹®À» »õ·Ó°Ô ±â¾ïÇØ º¸·Á¸é), RegEx °£Æí ÂüÁ¶¼­¸¦ ÂüÁ¶ÇϽʽÿÀ.

¿ÀÅäÇÖÅ°ÀÇ Á¤±Ô Ç¥Çö½ÄÀº ÆÞ-ȣȯÀÇ Á¤±Ô Ç¥Çö½Ä (PCRE)À» »ç¿ëÇÏ¿© ±¸ÇöµÇ¾ú½À´Ï´Ù: www.pcre.org.

°ü·Ã Ç׸ñ

RegExReplace(), RegEx Quick Reference, Á¤±Ô Ç¥Çö½Ä ¿ÜºÎ¿äû, InStr(), IfInString, StringGetPos, SubStr(), SetTitleMatchMode RegEx, Àü¿ªÀû ÀÏÄ¡¿Í Grep (Æ÷·³ ¸µÅ©)

ÅؽºÆ® µ¥ÀÌÅ͸¦ ¾ò´Â ÈçÇÑ ¹æ¹ý: FileRead, UrlDownloadToFile, Clipboard, GUI ÆíÁý ÄÜÆ®·Ñ

¿¹Á¦

FoundPos := RegExMatch("xxxabc123xyz", "abc.*xyz")  ; 4¸¦ µ¹·ÁÁÝ´Ï´Ù, ºÎÇÕÀÌ ¹ß°ßµÈ À§Ä¡ÀÔ´Ï´Ù.
FoundPos := RegExMatch("abc123123", "123$")  ; $°¡ ³¡¿¡ ºÎÇÕÇϱ⸦ ¿ä±¸Çϱ⠶§¹®¿¡ 7À» µ¹·ÁÁÝ´Ï´Ù.
FoundPos := RegExMatch("abc123", "i)^ABC")  ; ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÏÁö ¾Ê´Â ¿É¼ÇÀ» ÅëÇÏ¿© ºÎÇÕÇßÀ¸¹Ç·Î 1À» µ¹·ÁÁÝ´Ï´Ù.
FoundPos := RegExMatch("abcXYZ123", "abc(.*)123", SubPat)  ; 1À» µ¹·ÁÁÖ°í "XYZ"¸¦ SubPat1¿¡ ÀúÀåÇÕ´Ï´Ù.
FoundPos := RegExMatch("abc123abc456", "abc\d+", "", 2)  ; ½ÃÀÛ À§Ä¡°¡ 1ÀÌ ¾Æ´Ï¶ó 2À̱⠶§¹®¿¡ 1 ÀÌ ¾Æ´Ï¶ó 7À» µ¹·ÁÁÝ´Ï´Ù..

; ÀϹÝÀûÀÎ RegEx ¿¹Á¦µéÀº RegEx °£Æí ÂüÁ¶¼­¸¦ ÂüÁ¶ÇϽʽÿÀ.