13章 Appendix
正規表現に使える記号は下表のとおりです。
単独の文字とのマッチ | |
---|---|
x | 文字 x |
\\ | バックスラッシュ1文字 |
\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 に対応する制御文字 '\cm' は '\r' (CTRL-M)にマッチします。 |
文字クラスを使ったマッチ | |
. | 任意の文字 (行末記号とマッチする場合もある) |
[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] |
Unicode ブロック/スクリプト/カテゴリを使ったマッチ | |
\p{InB} \P{InB} | ブロックまたはスクリプト B に属する文字 (Inに続けて任意の Unicode ブロック名またはスクリプト名) \p{InHiragana}など。大文字 P は否定形 使用可能なブロック名/スクリプト名は下記の通り。 InAegeanNumbers InAlphabeticPresentationForms InArabic InArabicPresentationFormsA InArabicPresentationFormsB InArmenian InArrows InBasicLatin InBengali InBlockElements InBopomofo InBopomofoExtended InBoxDrawing InBraillePatterns InBuhid InByzantineMusicalSymbols InCJKCompatibility InCJKCompatibilityForms InCJKCompatibilityIdeographs InCJKCompatibilityIdeographsSupplement InCJKRadicalsSupplement InCJKSymbolsandPunctuation InCJKUnifiedIdeographs InCJKUnifiedIdeographsExtensionA InCJKUnifiedIdeographsExtensionB InCherokee InCombiningDiacriticalMarks InCombiningDiacriticalMarksforSymbols InCombiningHalfMarks InControlPictures InCurrencySymbols InCypriotSyllabary InCyrillic InDeseret InDevanagari InDingbats InEnclosedAlphanumerics InEnclosedCJKLettersandMonths InEthiopic InGeneralPunctuation InGeometricShapes InGeorgian InGothic InGreek InGreekExtended InGreekandCoptic InGujarati InGurmukhi InHalfwidthandFullwidthForms InHangulCompatibilityJamo InHangulJamo InHangulSyllables InHanunoo InHebrew InHighPrivateUseSurrogates InHighSurrogates InHiragana InIPAExtensions InIdeographicDescriptionCharacters InKanbun InKangxiRadicals InKannada InKatakana InKatakanaPhoneticExtensions InKhmer InKhmerSymbols InLao InLatin1Supplement InLatinExtendedA InLatinExtendedB InLatinExtendedAdditional InLetterlikeSymbols InLimbu InLinearBIdeograms InLinearBSyllabary InLowSurrogates InMalayalam InMathematicalAlphanumericSymbols InMathematicalOperators InMiscellaneousMathematicalSymbolsA InMiscellaneousMathematicalSymbolsB InMiscellaneousSymbols InMiscellaneousSymbolsandArrows InMiscellaneousTechnical InMongolian InMusicalSymbols InMyanmar InNumberForms InOgham InOldItalic InOpticalCharacterRecognition InOriya InOsmanya InPhoneticExtensions InPrivateUseArea InRunic InShavian InSinhala InSmallFormVariants InSpacingModifierLetters InSpecials InSuperscriptsandSubscripts InSupplementalArrowsA InSupplementalArrowsB InSupplementalMathematicalOperators InSupplementaryPrivateUseAreaA InSupplementaryPrivateUseAreaB InSyriac InTagalog InTagbanwa InTags InTaiLe InTaiXuanJingSymbols InTamil InTelugu InThaana InThai InTibetan InUgaritic InUnifiedCanadianAboriginalSyllabics InVariationSelectors InVariationSelectorsSupplement InYiRadicals InYiSyllables InYijingHexagramSymbols |
\p{IsC} \P{IsC} | カテゴリ C に属する文字 (Isに続けて任意の Unicode カテゴリ名称) \p{IsLu}など。大文字 P は否定形 使用可能なカテゴリ名は下記の通り。 IsCc (Other, Control) IsCf (Other, Format) IsCn (Other, Not Assigned (no characters in the file have this property)) IsCo (Other, Private Use) IsCs (Other, Surrogate) IsLl (Letter, Lowercase) IsLm (Letter, Modifier) IsLo (Letter, Other) IsLt (Letter, Titlecase) IsLu (Letter, Uppercase) IsMc (Mark, Spacing Combining) IsMe (Mark, Enclosing) IsMn (Mark, Nonspacing) IsNd (Number, Decimal Digit) IsNl (Number, Letter) IsNo (Number, Other) IsPc (Punctuation, Connector) IsPd (Punctuation, Dash) IsPe (Punctuation, Close) IsPf (Punctuation, Final quote (may behave like Ps or Pe depending on usage)) IsPi (Punctuation, Initial quote (may behave like Ps or Pe depending on usage)) IsPo (Punctuation, Other) IsPs (Punctuation, Open) IsSc (Symbol, Currency) IsSk (Symbol, Modifier) IsSm (Symbol, Math) IsSo (Symbol, Other) IsZl (Separator, Line) IsZp (Separator, Paragraph) IsZs (Separator, Space) |
境界とのマッチ | |
^ | 行の先頭 |
$ | 行の末尾 |
\b | 単語境界 |
\B | 非単語境界 |
\A | 入力の先頭 |
\G | 前回のマッチの末尾 |
\Z | 最後の行末記号がある場合は、それを除く入力の末尾 |
\z | 入力の末尾 |
最短マッチ (reluctant match) | |
X?? | X、1 または 0 回 |
X*? | X、0 回以上 |
X+? | X、1 回以上 |
X{n}? | X、n 回 |
X{n,}? | X、n 回以上 |
X{n,m}? | X、n 回以上、m 回以下 |
最長マッチ (greedy match) | |
X? | X、1 または 0 回 |
X* | X、0 回以上 |
X+ | X、1 回以上 |
X{n} | X、n 回 |
X{n,} | X、n 回以上 |
X{n,m} | X、n 回以上、m 回以下 |
絶対最大マッチ (possessive match) | |
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 で開始された引用をエスケープする |
幅ゼロの先読みと後読み (Lookahead / Lookbehind) | |
(?=X) | 幅ゼロの肯定先読み。 a(?=X) は X が後に続く a にマッチします。 |
(?!X) | 幅ゼロの否定先読み。 a(?!X) は X が後に続かない a にマッチします。 |
(?<=X) | 幅ゼロの肯定後読み。 (?<X)b は X が前にある b にマッチします。 |
(?<!X) | 幅ゼロの否定後読み。 (?<!X)b は X が前にない b にマッチします。 |
特殊な構文 | |
(?:X) | Xにマッチする、先方参照を行わない正規表現グループ。 先方参照に使う番号の割当は行なわれません。 |
(?>X) | Xにマッチする、独立した先方参照を行わない正規表現グループ。 X のマッチは possessive でありバックトラックしません。 |
フラグの設定 | |
(?i) | 大文字と小文字を区別しないマッチングを有効にします。このフラグだけでは US-ASCII 文字だけが影響を受けます。Unicode に準拠した大文字と小文字を区別しないマッチングを有効にするには、このフラグと u フラグを組み合わせて指定します。(?iu) |
(?-i) | i フラグをオフに設定する。 |
(?d) | Unix Line モードを有効にします。このモードでは、'\n' 行末記号以外は . と ^ と $ の動作で認識されません。 |
(?-d) | d フラグをオフに設定する。 |
(?m) | 複数行モードを有効にします。複数行モードでは ^ は入力文字列中の行末記号の直後にマッチし、$ は入力文字列中の行末記号の直前と入力文字列の末尾にマッチします。デフォルトではこのフラグはオフであり ^ は入力文字列の先頭にだけマッチし、$ は入力文字列の末尾にだけマッチします。 |
(?-m) | m フラグをオフに設定する。 |
(?s) | 単一行モードを有効にします。 単一行モードでは、表現 . は行末記号を含む任意の文字にマッチします。デフォルトでは . は行末記号にはマッチしません。 |
(?-s) | s フラグをオフに設定する。 |
(?iu) | このフラグと i フラグを同時に指定した場合は、Unicode 標準に準拠した大文字と小文字を区別しないマッチングが行われます。 |
(?-iu) | i フラグと u フラグをオフに設定する。 |
(?x) | パターン内で空白とコメントを使用できるようになります。このモードをオンにするとパターン中の空白は無視されます。また # から行末までがコメントとして無視されるようになります。 |
(?-x) | x フラグをオフに設定する。 |
(?idmsux-idmsux:X) | 指定されたフラグをオンまたはオフにした状態でパターン X を処理します。 |