æ£è¦è¡¨ç¾
æ£è¦è¡¨ç¾ï¼ç¥ã㦠regexï¼ã¯ãéçºè ãæååããã¿ã¼ã³ã¨ç §åããããé¨åä¸è´æ å ±ãæ½åºããããåã«æååããã®ãã¿ã¼ã³ã«é©åãããã©ãããæ¤æ»ããããããã¨ãã§ãã¾ããæ£è¦è¡¨ç¾ã¯å¤ãã®ããã°ã©ãã³ã°è¨èªã§ä½¿ããã¦ãããJavaScript ã®æ§æã¯ Perl ããå½±é¿ãåãã¦ãã¾ãã
å©ç¨ã§ããæ£è¦è¡¨ç¾ã®æ§æã¨ããããã©ã®ããã«åä½ããã®ãã®æ¦è¦ãææ¡ããããã«ãæ£è¦è¡¨ç¾ã¬ã¤ããèªããã¨ããå§ããã¾ãã
解説
æ£è¦è¡¨ç¾ã¯ãå½¢å¼è¨èªçè«ã«ãããéè¦ãªæ¦å¿µã§ããæ£è¦è¡¨ç¾ã¯ãæååã®ç¡ééåï¼ãè¨èªãã¨å¼ã°ããï¼ãè¨è¿°ããæ¹æ³ã§ããæ£è¦è¡¨ç¾ã®æ ¸ã¨ãªãã®ã¯ä»¥ä¸ã®æ©è½ã§ãï¼
- ãã®è¨èªã§ä½¿ç¨ã§ãããæåãã®éåãããã¯ãã¢ã«ãã¡ããããã¨å¼ã°ãã¾ãã
- é£çµ:
abã¯ãæåaã«ç¶ãæåbããæå³ãã¦ãã¾ãã - è«çå:
a|bã¯ãaãbã®ã©ã¡ããããæå³ãã¦ãã¾ãã - ã¯ãªã¼ãã¹ã¿ã¼:
a*ã¯ã0æå以ä¸ã®aæåããæå³ãã¦ãã¾ãã
æéã®ã¢ã«ãã¡ãããï¼è±èªã®ã¢ã«ãã¡ããã 26 æåã Unicode æåéåå ¨ä½ãªã©ï¼ã¨ã¿ãªãããã¨ããã¹ã¦ã®æ£è¦è¨èªã¯ä¸è¨ã®æ©è½ã«ãã£ã¦çæãããã¨ãã§ãã¾ãããã¡ãããå¤ãã®ãã¿ã¼ã³ã¯ãã®æ¹æ³ã§è¡¨ç¾ããã®ã¯ã¨ã¦ãé¢åãªã®ã§ (ã10 æ¡ã®æ°åãããç©ºç½æåã§ã¯ãªãæåããªã©)ãJavaScript ã®æ£è¦è¡¨ç¾ã«ã¯ä¸è¨ã«ç´¹ä»ãããããªå¤ãã®ç¥è¨æ³ãå«ã¾ãã¦ãã¾ãã
ã¡ã¢: JavaScriptã®æ£è¦è¡¨ç¾ã¯å¾æ¹åç §ãåå¨ãããããå³å¯ã«ã¯æ£è¦è¡¨ç¾ã§ã¯ããã¾ããï¼æ£è¦è¡¨ç¾ã¯æéç¶æ ãæã¤å¿ è¦ãããã¾ãï¼ãããããããã§ãã¨ã¦ãæçãªæ©è½ã§ãã
æ£è¦è¡¨ç¾ã®ä½æ
æ£è¦è¡¨ç¾ã¯é常ããã¿ã¼ã³ãã¹ã©ãã·ã¥ (/) ã§å²ãã§ãªãã©ã«ã¨ãã¦ä½æãã¾ãã
const regex1 = /ab+c/g;
æ£è¦è¡¨ç¾ã¯ RegExp() ã³ã³ã¹ãã©ã¯ã¿ã¼ã§ä½æãããã¨ãã§ãã¾ãã
const regex2 = new RegExp("ab+c", "g");
å®è¡æã®éãã¯ããã¾ããããããã©ã¼ãã³ã¹ãéçè§£ææ§ãã¨ã¹ã±ã¼ãæåã®ãªã¼ãµãªã³ã°ã®äººéå·¥å¦çãªèª²é¡ã«å½±é¿ãæã¤ãã¨ãããã¾ãã詳ããæ
å ±ã¯ RegExp ãåç
§ãã¦ãã ããã
æ£è¦è¡¨ç¾ãã©ã°
ãã©ã°ã¯ãæ£è¦è¡¨ç¾ãè§£éãããæ¹æ³ãå ¥åããã¹ãã¨ããã¨ãããæ¹æ³ã夿´ã§ããç¹å¥ãªå¼æ°ã§ããåãã©ã°ã¯ `RegExp`` ãªãã¸ã§ã¯ãã® 1 ã¤ã®ã¢ã¯ã»ãµã¼ããããã£ã«å¯¾å¿ãã¾ãã
| ãã©ã° | 説æ | 対å¿ãããããã㣠|
|---|---|---|
d |
é¨åæååã®ç §åçµæã®ã¤ã³ããã¯ã¹ãçæãã¾ãã | hasIndices |
g |
ã°ãã¼ãã«æ¤ç´¢ã§ãã | global |
i |
大æåå°æåãåºå¥ããªãæ¤ç´¢ã§ãã | ignoreCase |
m |
^ 㨠$ ãæååå
¨ä½ã§ã¯ãªããåè¡ã®å
é ã¨æ«å°¾ã¨ç
§åããããã«ãã¾ãã |
multiline |
s |
. ãæ¹è¡æåã¨ç
§åãã¾ãã |
dotAll |
u |
"Unicode" ã§ãããã¿ã¼ã³ã Unicode ã³ã¼ããã¤ã³ãã®ä¸¦ã³ã¨ãã¦æ±ãã¾ãã | unicode |
v |
u ã¢ã¼ããã¢ããã°ã¬ã¼ããããã£ã¨å¤ãã® Unicode æ©è½ã使ç¨å¯è½ã«ãã¾ãã |
unicodeSets |
y |
対象ã¨ããæååã®ç¾å¨ä½ç½®ããç §åãããç²çã(sticky) æ¤ç´¢ãè¡ãã¾ãã | sticky |
iãmãs ãã©ã°ã¯ã修飾å ã®æ§æã使ç¨ãã¦ãæ£è¦è¡¨ç¾ã®ç¹å®ã®é¨åã«å¯¾ãã¦æå¹ã¾ãã¯ç¡å¹ã«ãããã¨ãã§ãã¾ãã
以ä¸ã®ä¸è¦§ã¯ãå©ç¨ã§ãããã¹ã¦ã®æ£è¦è¡¨ç¾æ§æããæ§æã®æ§è³ªãã¨ã«åé¡ãããã®ã§ãã
ã¢ãµã¼ã·ã§ã³
ã¢ãµã¼ã·ã§ã³ã¯ãæååãæå®ããä½ç½®ã§ç¹å®ã®æ¡ä»¶ãæºãããã©ãããæ¤æ»ããæ§æã§ããã¢ãµã¼ã·ã§ã³ã¯æ°éåã§ãã¾ããã
- å
¥åå¢çã¢ãµã¼ã·ã§ã³:
^,$ -
ç¾å¨ã®ä½ç½®ãå ¥åã®éå§ã¾ãã¯çµäºã§ãããã¨ãã¾ãã¯
mãã©ã°ãè¨å®ããã¦ããå ´åã¯ãè¡ã®éå§ã¾ãã¯çµäºã§ãããã¨ã表ãã¾ãã - å
èªã¿ã¢ãµã¼ã·ã§ã³:
(?=...),(?!...) -
ç¾å¨ã®ä½ç½®ãç¹å®ã®ãã¿ã¼ã³ã®å¾ã«æ¥ããã¨ãã¾ãã¯æ¥ãªããã¨ã表ãã¾ãã
- å¾èªã¿ã¢ãµã¼ã·ã§ã³:
(?<=...),(?<!...) -
ç¾å¨ã®ä½ç½®ãç¹å®ã®ãã¿ã¼ã³ã®åã«æ¥ããã¨ãã¾ãã¯æ¥ãªããã¨ã表ãã¾ãã
- åèªå¢çã¢ãµã¼ã·ã§ã³:
\b,\B -
ç¾å¨ã®ä½ç½®ãåèªå¢çã§ãããã¨ã表ãã¾ãã
ã¢ãã
ã¢ãã ã¯æ£è¦è¡¨ç¾ã®æãåºæ¬çãªåä½ã§ããåã¢ãã ã¯æååä¸ã® 1 ã¤ä»¥ä¸ã®æåããæ¶è²»ãããç §åã«å¤±æããããæ¬¡ã®ã¢ãã ã§ãã¿ã¼ã³ã®ç §åãç¶ããã®ã©ã¡ããã§ãã
- 徿¹åç
§:
\1,\2 -
以åã«ä¸è´ãããã£ããã£ã°ã«ã¼ãã§ææããããµããã¿ã¼ã³ã¨ä¸è´ãã¾ãã
- ãã£ããã£ã°ã«ã¼ã:
(...) -
ãµããã¿ã¼ã³ã«ä¸è´ããä¸è´ããæ å ±ãè¨æ¶ãã¾ãã
- æåã¯ã©ã¹:
[...],[^...] -
ããæåéåã«å«ã¾ãããã¾ãã¯å«ã¾ããªãæåã¨ä¸è´ãã¾ãã
vãã©ã°ãæå¹ã«ããã¨ãå¯å¤é·ã®æååã«ãä¸è´ããããã«ä½¿ç¨ãããã¨ãã§ãã¾ãã - æåã¯ã©ã¹ã¨ã¹ã±ã¼ã:
\d,\D,\w,\W,\s,\S -
ãããããè¨å®ãããæåéåã«å«ã¾ãããã¾ãã¯å«ã¾ããªãæåã¨ä¸è´ãã¾ãã
- æåã¨ã¹ã±ã¼ã:
\n,\u{...} -
ãªãã©ã«å½¢å¼ã§ã¯è¡¨ç¾ãã«ããæåã¨ä¸è´ãã¾ãã
- ãªãã©ã«æå:
a,b -
ç¹å®ã®æåã¨ä¸è´ãã¾ãã
- 修飾å:
(?ims-ims:...) -
æ£è¦è¡¨ç¾ã®ç¹å®ã®é¨åã«ããã¦ããã©ã°è¨å®ã䏿¸ããã¾ãã
- ååä»ã徿¹åç
§:
\k<name> -
ãã®åã§ååä»ããã£ããã£ã°ã«ã¼ãã«ä¸è´ããææããããµããã¿ã¼ã³ã«ä¸è´ãã¾ãã
- ååä»ããã£ããã£ã°ã«ã¼ã:
(?<name>...) -
ãµããã¿ã¼ã³ã«ä¸è´ããä¸è´ããæ å ±ãè¨æ¶ãã¾ãããã®ã°ã«ã¼ãã¯ããã¿ã¼ã³å ã®ã¤ã³ããã¯ã¹ã§ã¯ãªããç¬èªã®ååã§èå¥ãããã¨ãã§ãã¾ãã
- éãã£ããã£ã°ã«ã¼ã:
(?:...) -
ä¸è´ããæ å ±ãè¨æ¶ãããã¨ãªãããµããã¿ã¼ã³ã«ä¸è´ãã¾ãã
- Unicode æåã¯ã©ã¹ã¨ã¹ã±ã¼ã:
\p{...},\P{...} -
Unicode ããããã£ãæå®ãã¾ãã
vãã©ã°ãæå¹ã«ããã¨ãå¯å¤é·ã®æååã«ãä¸è´ããããã«ä½¿ç¨ãããã¨ãã§ãã¾ãã - ã¯ã¤ã«ãã«ã¼ã:
. -
sãã©ã°ãè¨å®ããã¦ããªãéããæ¹è¡ä»¥å¤ã®æåã¨ä¸è´ãã¾ãã
ãã®ä»ã®æ©è½
ãããã®æ©è½ã¯ããèªèº«ã¯ãã¿ã¼ã³ãæå®ãã¾ãããããã¿ã¼ã³ãæ§æããããã«ä½¿ç¨ãã¾ãã
- è«çå:
| -
|æåã§åºåããã鏿è¢ã®éåã®ããããã¨ä¸è´ãã¾ãã - 修飾å:
*,+,?,{n},{n,},{n,m} -
ã¢ãã ã«ä¸å®åæ°ä¸è´ãã¾ãã
ã¨ã¹ã±ã¼ãã·ã¼ã±ã³ã¹
æ£è¦è¡¨ç¾ã«ããããã¨ã¹ã±ã¼ãã·ã¼ã±ã³ã¹ãã¨ã¯ã\ ã®å¾ã« 1 ã¤ä»¥ä¸ã®æåãç¶ããã¨ã§å½¢æãããæ§æã®ãã¨ãæãã¾ãã以ä¸ã¯æå¹ãªã¨ã¹ã±ã¼ãã·ã¼ã±ã³ã¹ã®ä¸è¦§ã§ãã
| ã¨ã¹ã±ã¼ãã·ã¼ã±ã³ã¹ | ç¶ããã® | æå³ |
|---|---|---|
\B |
ãªã | éåèªå¢çã¢ãµã¼ã·ã§ã³ |
\D |
ãªã | æåã¯ã©ã¹ã¨ã¹ã±ã¼ãã§ãæ°å以å¤ã®æåã表ã |
\P |
{ãUnicode ããããã£ãå¤ã} |
Unicode æåã¯ã©ã¹ã¨ã¹ã±ã¼ãã§ãæå®ããã Unicode ããããã£ä»¥å¤ã®æåã表ã |
\S |
ãªã | æåã¯ã©ã¹ã¨ã¹ã±ã¼ãã§ããã¯ã¤ãã¹ãã¼ã¹æå以å¤ã表ã |
\W |
ãªã | æåã¯ã©ã¹ã¨ã¹ã±ã¼ãã§ãè¨èªæå以å¤ã表ã |
\b |
ãªã | åèªå¢çã¢ãµã¼ã·ã§ã³ãæåã¯ã©ã¹ã®ä¸ã§ã¯ U+0008 (BACKSPACE) ã表ã |
\c |
A ãã Z ã¾ã㯠a ãã z |
æåã¨ã¹ã±ã¼ãã§ãå¤ããã®æåã® 32 ã§å²ã£ãä½ãã¨ãªãå¶å¾¡æå表ã |
\d |
ãªã | æåã¯ã©ã¹ã¨ã¹ã±ã¼ãã§ãæ°åï¼0 ãã 9ï¼ã表ã |
\f |
ãªã | æåã¨ã¹ã±ã¼ãã§ã U+000C (FORM FEED) ã表ã |
\k |
<ãèå¥åã> |
ååä»ã徿¹åç § |
\n |
ãªã | æåã¨ã¹ã±ã¼ãã§ãU+000A (LINE FEED) ã表ã |
\p |
{ãUnicode ããããã£ãå¤ã} |
Unicode æåã¯ã©ã¹ã¨ã¹ã±ã¼ãã§ãæå®ããã Unicode ããããã£ã®æåã表ã |
\q |
{ãæååã} |
v ã¢ã¼ãã®æåã¯ã©ã¹ã®ã¿ã§æå¹ãæåéãä¸è´ãããæååã表ã |
\r |
ãªã | æåã¨ã¹ã±ã¼ãã§ãU+000D (CARRIAGE RETURN) ã表ã |
\s |
ãªã | æåã¯ã©ã¹ã¨ã¹ã±ã¼ãã§ããã¯ã¤ãã¹ãã¼ã¹æåã表ã |
\t |
ãªã | æåã¨ã¹ã±ã¼ãã§ãU+0009 (CHARACTER TABULATION) ã表ã |
\u |
4 æ¡ã® 16 鲿°ãã¾ã㯠{ã1 ï½ 6 æ¡ã® 16 鲿°ã} |
æåã¨ã¹ã±ã¼ãã§ãæå®ãããã³ã¼ããã¤ã³ãã®æåã表ã |
\v |
ãªã | æåã¨ã¹ã±ã¼ãã§ãU+000B (LINE TABULATION) ã表ã |
\w |
ãªã | æåã¯ã©ã¹ã¨ã¹ã±ã¼ãã§ãè¨èªæåãï¼A ï½ Z, a ï½ z, 0 ï½ 9, _ï¼ã表ã |
\x |
2 æ¡ã® 16 鲿° | æåã¨ã¹ã±ã¼ãã§ãæå®ãããå¤ã®æåã表ã |
\0 |
ãªã | æåã¨ã¹ã±ã¼ãã§ãU+0000 (NULL) ã表ã |
\ ã« 0 ã¨ä»ã®æ°åãç¶ãã¨å¤ã 8 鲿°ã®ã¨ã¹ã±ã¼ãã·ã¼ã±ã³ã¹ã«ãªãã¾ãããUnicode 対å¿ã¢ã¼ãã§ã¯ç¦æ¢ããã¦ãã¾ãã\ ã®å¾ã«ä»»æã®æ°åã®ä¸¦ã³ãç¶ãã¨ã徿¹åç
§ã¨ãªãã¾ãã
å ãã¦ã\ ã«ã¯ä¸é¨ã®è¨å·ãæ°åãç¶ãããã¨ãã§ãããã®å ´åãã¨ã¹ã±ã¼ãã·ã¼ã±ã³ã¹ã¯å¸¸ã«ã¨ã¹ã±ã¼ããããæåèªèº«ã表ãæåã¨ã¹ã±ã¼ãã¨ãªãã¾ãã
\$,\(,\),\*,\+,\.,\/,\?,\[,\\,\],\^,\{,\|,\}: ã©ãã§ãæå¹\-: æåã¯ã©ã¹ã®ä¸ã§ã®ã¿æå¹\!,\#,\%,\&,\,,\:,\;,\<,\=,\>,\@,\`,\~:vã¢ã¼ãæåã¯ã©ã¹ã®ä¸ã§ã®ã¿æå¹
ãã®ä»ã® ASCII æåãããªãã¡ç©ºç½æåã"ã'ã_ãããã¦ä¸è¨ä»¥å¤ã®æåã¯æå¹ãªã¨ã¹ã±ã¼ãã·ã¼ã±ã³ã¹ã§ã¯ããã¾ãããUnicode é対å¿ã¢ã¼ãã§ã¯ãä¸è¨ã®ãããã§ããªãã¨ã¹ã±ã¼ãã·ã¼ã±ã³ã¹ã¯èå¥ã¨ã¹ã±ã¼ãã¨ãªããããã¯ã¹ã©ãã·ã¥ã«ç¶ãæåã表ãã¾ããä¾ãã°ã\a ã¯æå a ã表ãã¾ãããã®åä½ã¯ã徿¹äºææ§ã®èª²é¡ãçºçããããã¨ãªãæ°ããã¨ã¹ã±ã¼ãã·ã¼ã±ã³ã¹ãå°å
¥ããè½åãå¶éãããããUnicode 対å¿ã¢ã¼ãã§ã¯ç¦æ¢ããã¦ãã¾ãã
仿§æ¸
ãã©ã¦ã¶ã¼ã®äºææ§
é¢é£æ å ±
- æ£è¦è¡¨ç¾ã¬ã¤ã
RegExp