Edited at

iOSエンジニアの正規表現入門

More than 1 year has passed since last update.


位置


  • ^

    先頭


  • $

    行末



量指定子


  • *

    直前のパターンに0回以上一致。img[0-9]*の場合、img,img8,img123などに一致


  • +

    直前のパターンに1回以上一致。img[0-9]+の場合、 img8,img123などに一致


  • ?

    直前のパターンに0回か1回一致。img[0-9]?の場合、 img,img1が一致し、img123には一致しない


  • {n}

    直前に指定された文字のn回の繰り返し。e{2}Greenに一致し、likeには一致しない


  • {n,}

    直前に指定された文字のn回以上の繰り返し。e{2,}Green, Greeen, Greeeenに一致。e{1,}e+と同義


  • {,n}

    直前に指定された文字のn回以下の繰り返し。e{,3}Greeen,Green,Grenに一致


  • {n,m}

    直前に指定された文字のn回以上m回以下の繰り返し。e{1,3}Greeeeeeeeeeeeenの最初の3つの一致。e{0,1}e?と同義



文字


  • a

    文字a


  • .

    任意の1文字(改行は含まない)


  • \d

    数字1文字。[0-9]と同義


  • \D

    数字1文字以外。[^0-9]と同義


  • \w

    英数字1文字。[a-zA-Z0-9]と同義


  • \W

    英数字1文字以外。[^a-zA-Z0-9]と同義


  • \s

    空白文字1文字。[\t\n\r\f\v]と同義


  • \S

    空白文字 1 文字以外。[^\t\n\r\f\v]と同義


  • \t

    タブ1文字


  • \n

    改行1文字。



エスケープ

特殊文字
エスケープ

\
\\

*
\*

+
\+

.
\.

?
\?

{ }
\{\}

( )
\(\)

[ ]
\[\]

$
$

-
\-

|
\ |

/
\/


文字クラス


  • [abc]

    abcいずれか1文字


  • [^abc]

    abc以外の文字


  • [a-z]

    aからzまでの子文字アルファベットのいずれか1文字。(ハイフンなどを含めたい場合[-a-z])


  • [A-Z]

    AからZまでの大文字アルファベットのいずれか1文字


  • [0-9]

    0-9の数字のいずれか1文字


  • [A-Za-z0-9]

    結合したパターン。A-Zまたはa-zまたは0-9の英数字


  • [a-z&&[^bc]]

    bcを除くa-z[ad-z]と同義


  • (abc)

    カッコ内の文字列をひとつのグループとして管理する


  • (abc|def)

    abc, defの文字列のいずれか


  • (?:abc)肯定先読み

    abcに一致する文字列が始まる位置にある検索文字列と一致する。一致した文字列はキャプチャはされない。industry|industriesと指定する代わりに、industr(?:y|ies)と指定することができる。Windows(?=95|98|NT|2000)は、Windows 2000Windows に一致し、"Windows 3.1" の "Windows"には一致しない。


  • (?!abc)否定先読み

    abcに一致しない文字列が始まる位置にある検索文字列と一致する。一致した文字列はキャプチャはされない。Windows (?!95|98|NT|2000)は、Windows 3.1Windows に一致し、Windows 2000Windowsには一致しない


  • (?<=abc)肯定戻り読み

    abcに一致する文字列が始まる位置にある検索文字列と一致する。一致した文字列はキャプチャはされない。(?<=Ubuntu|Debian GNU) Linux は、Ubuntu LinuxLinux に一致し、Vine LinuxLinuxには一致しない。


  • (?<!abc)否定戻り読み

    abcに一致しない文字列が始まる位置にある検索文字列と一致する。一致した文字列はキャプチャはされない。(?<!Ubuntu|Debian GNU) Linux は、Vine LinuxLinuxに一致し、Ubuntu LinuxLinuxには一致しない。



サンプルコード


extension String {
func isNumber() -> Bool {
let pattern = "^[\\d]+$"
guard let regex = try? NSRegularExpression(pattern: pattern) else { return false }
let matches = regex.matches(in: self, range: NSRange(location: 0, length: length))
return matches.count > 0
}
}

let numberString = "0123"
print(numberString.isNumber()) // true

let alphabet = "abcd"
print(alphabet.isNumber()) // false


参考