Class

NSRegularExpression

An immutable representation of a compiled regular expression that you apply to Unicode strings. 可変でない表現のコンパイル済み正規表現で、それをあなたはユニコード文字列に適用します。

Declaration 宣言

class NSRegularExpression : NSObject

Overview 概要

The fundamental matching method for NSRegularExpression is a Block iterator method that allows clients to supply a Block object which will be invoked each time the regular expression matches a portion of the target string. There are additional convenience methods for returning all the matches as an array, the total number of matches, the first match, and the range of the first match. NSRegularExpressionの基本となるマッチング・メソッドは、「ブロック」イテレータメソッド(反復子メソッド)です、それは、その正規表現が目標文字列のある部分にマッチするたびに呼び出される「ブロック」オブジェクトを、クライアントが提供できるようにするものです。全てのマッチの配列、マッチの総数、最初のマッチ、そして最初のマッチの範囲を返す、いっそう便利なメソッドもあります。

An individual match is represented by an instance of the NSTextCheckingResult class, which carries information about the overall matched range (via its range property), and the range of each individual capture group (via the range(at:) method). For basic NSRegularExpression objects, these match results will be of type regularExpression, but subclasses may use other types. ある特定のマッチはNSTextCheckingResultクラスのインスタンスによって表されます、そして、それはマッチされた全体の範囲(そのrangeプロパティによって)、そして個々の捕獲グループの範囲(range(at:)メソッドによって)に関する情報を持ち運びます。基本的なNSRegularExpressionオブジェクトに対して、これらのマッチ結果は型regularExpressionのものです、しかしサブクラスは他の型を使うかもしれません。

Examples Using NSRegularExpression NSRegularExpressionの使用例

What follows are a set of graduated examples for using the NSRegularExpression class. All these examples use the regular expression \\b(a|b)(c|d)\\b as their regular expression. 以下のものは、NSRegularExpressionクラスの使用に対する一揃いの段階的な例です。これらの例の全ては、それらの正規表現として正規表現\\b(a|b)(c|d)\\bを使います。

This snippet creates a regular expression to match two-letter words, in which the first letter is “a” or “b” and the second letter is “c” or “d”. Specifying caseInsensitive means that matches will be case-insensitive, so this will match “BC”, “aD”, and so forth, as well as their lower-case equivalents. この切れっぱしは、最初の文字が“a”または“b”で2番目の文字が“c”または“d”であるところの、2文字単語にマッチする正規表現をつくります。caseInsensitiveの指定は、マッチが大文字と小文字の区別をしないことを意味します、それでこれは、“BC”、“aD”、その他にマッチします、それらの小文字の等価物だけではなしに。


NSError *error = NULL;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"\\b(a|b)(c|d)\\b"
                                                                       options:NSRegularExpressionCaseInsensitive
                                                                         error:&error];

The numberOfMatches(in:options:range:) method provides a simple mechanism for counting the number of matches in a given range of a string. numberOfMatches(in:options:range:)メソッドは、ある文字列の与えられた範囲においてマッチの数を数えるための単純な仕組みを提供します。


NSUInteger numberOfMatches = [regex numberOfMatchesInString:string
                                                    options:0
                                                      range:NSMakeRange(0, [string length])];

If you are interested only in the overall range of the first match, the rangeOfFirstMatch(in:options:range:) method provides it for you. Some regular expressions (though not the example pattern) can successfully match a zero-length range, so the comparison of the resulting range with {NSNotFound, 0} is the most reliable way to determine whether there was a match or not. あなたが最初のマッチの範囲だけに興味があるならば、rangeOfFirstMatch(in:options:range:)メソッドがあなたにそれを与えます。若干の正規表現は(例パターンはそうでないけれども)成功裏にゼロ長の範囲にマッチすることができるので、結果として生じる範囲を{NSNotFound, 0}と比較することは、マッチがあったかどうか判定する最も信頼できる方法です。

The example regular expression contains two capture groups, corresponding to the two sets of parentheses, one for the first letter, and one for the second. If you are interested in more than just the overall matched range, you want to obtain an NSTextCheckingResult object corresponding to a given match. This object provides information about the overall matched range, via its range property, and also supplies the capture group ranges, via the range(at:) method. The first capture group range is given by [result rangeAtIndex:1], the second by [result rangeAtIndex:2]. この例の正規表現は、最初の文字のためのものと2番目のためのもの、2つの括弧対に対応している、2つの捕獲グループを含みます。あなたが単にマッチした範囲全体だけでなくより多くのことに興味を持つならば、あなたは与えられたマッチに対応しているNSTextCheckingResultオブジェクトを得るといいでしょう。このオブジェクトは、そのrangeプロパティによって、全体的なマッチされた範囲に関する情報を提供して、そのうえ、range(at:)メソッドによって、捕獲グループの範囲を供給します。最初の捕獲グループ範囲は[result rangeAtIndex:1]で、2番目は[result rangeAtIndex:2]で与えられます。 Sending a result the range(at:) message and passing 0 is equivalent to [result range].

If the result returned is non-nil, then [result range] will always be a valid range, so it is not necessary to compare it against {NSNotFound, 0}. However, for some regular expressions (though not the example pattern) some capture groups may or may not participate in a given match. If a given capture group does not participate in a given match, then [result rangeAtIndex:idx] will return {NSNotFound, 0}. 返される結果がnilでないならば、[result range]は常に有効な範囲であるので、それを{NSNotFound, 0}と比較することは必要ではありません。しかし、若干の正規表現では(例パターンはそうでないけれども)いくつかの捕獲グループが、ある与えられたマッチに関与するかもしれないし、しないかもしれません。ある捕獲グループが与えられたマッチに関与しないならば、 [result rangeAtIndex:idx]{NSNotFound, 0}を返すでしょう。


NSRange rangeOfFirstMatch = [regex rangeOfFirstMatchInString:string options:0 range:NSMakeRange(0, [string length])];
if (!NSEqualRanges(rangeOfFirstMatch, NSMakeRange(NSNotFound, 0))) {
    NSString *substringForFirstMatch = [string substringWithRange:rangeOfFirstMatch];
}

The matches(in:options:range:) returns all the matching results. matches(in:options:range:)は、全てのマッチした結果を返します。


NSArray *matches = [regex matchesInString:string
                                  options:0
                                    range:NSMakeRange(0, [string length])];
for (NSTextCheckingResult *match in matches) {
     NSRange matchRange = [match range];
     NSRange firstHalfRange = [match rangeAtIndex:1];
     NSRange secondHalfRange = [match rangeAtIndex:2];
}

The firstMatch(in:options:range:) method is similar to matches(in:options:range:) but it returns only the first match. firstMatch(in:options:range:)メソッドはmatches(in:options:range:)に似ています、しかしそれは最初のマッチだけを返します。


NSTextCheckingResult *match = [regex firstMatchInString:string
                                                options:0
                                                  range:NSMakeRange(0, [string length])];
if (match) {
    NSRange matchRange = [match range];
    NSRange firstHalfRange = [match rangeAtIndex:1];
    NSRange secondHalfRange = [match rangeAtIndex:2];
 }

The Block enumeration method enumerateMatches(in:options:range:using:) is the most general and flexible of the matching methods of NSRegularExpression. It allows you to iterate through matches in a string, performing arbitrary actions on each as specified by the code in the Block and to stop partway through if desired. In the following example case, the iteration is stopped after a certain number of matches have been found. 「ブロック」列挙メソッドenumerateMatches(in:options:range:using:)は、NSRegularExpressionのマッチング・メソッドの最も一般的で柔軟性に富むものです。それはある文字列の中のマッチすべてに対して、それぞれにおいて「ブロック」のコードで指定される通りに任意のアクションの実行を繰り返すこと、そして希望する場合には最後までの途中で中止することをあなたに可能にします。以下の例の場合には、繰り返しは、特定の数のマッチが見つけられた後で中止されます。

If neither of the special options reportProgress or reportCompletion is specified, then the result argument to the Block is guaranteed to be non-nil, and as mentioned before, it is guaranteed to have a valid overall range. See NSRegularExpression.MatchingOptions for the significance of reportProgress or reportCompletion. 特別なオプションreportProgressまたはreportCompletionのどちらも指定されないならば、「ブロック」に対する結果引数は、nilでないことを保証されます、そして前に言及されたように、それは有効な全体的な範囲を持つと保証されます。NSRegularExpression.MatchingOptionsreportProgressreportCompletionの意義のために見てください。


__block NSUInteger count = 0;
[regex enumerateMatchesInString:string options:0 range:NSMakeRange(0, [string length]) usingBlock:^(NSTextCheckingResult *match, NSMatchingFlags flags, BOOL *stop){
     NSRange matchRange = [match range];
     NSRange firstHalfRange = [match rangeAtIndex:1];
     NSRange secondHalfRange = [match rangeAtIndex:2];
     if (++count >= 100) *stop = YES;
}];

NSRegularExpression also provides simple methods for performing find-and-replace operations on a string. The following example returns a modified copy, but there is a corresponding method for modifying a mutable string in place. The template specifies what is to be used to replace each match, with $0 representing the contents of the overall matched range, $1 representing the contents of the first capture group, and so on. In this case, the template reverses the two letters of the word. NSRegularExpressionはまた、単純なメソッドを検索置換操作を文字列において実行するために提供します。以下の例は修正されたコピーを返します、しかし可変文字列をその場で修正する対応するメソッドがあります。テンプレート(ひな形)は、全体的なマッチされた範囲の内容を表す$0、そして最初の捕獲グループ内容を表す$1など、各マッチを置換するために何が使われることになるかを指定します。この場合では、テンプレートは語の2つの文字を逆にします。


NSString *modifiedString = [regex stringByReplacingMatchesInString:string
                                                           options:0
                                                             range:NSMakeRange(0, [string length])
                                                      withTemplate:@"$2$1"];

Concurrency and Thread Safety 並列性とスレッド安全

NSRegularExpression is designed to be immutable and thread safe, so that a single instance can be used in matching operations on multiple threads at once. However, the string on which it is operating should not be mutated during the course of a matching operation, whether from another thread or from within the Block used in the iteration. NSRegularExpressionはイミュータブル(不変)でスレッドセーフに設計されます、そのため単一のインスタンスが同時に複数のスレッドの上でのマッチング操作で使われることができます。しかしながら、別のスレッド由来かまたは繰り返しにおいて使われる「ブロック」内部由来かどうかに関係なく、それが作用している文字列がマッチング操作の経過の間に変化しないようにする必要があります。

Regular Expression Syntax 正規表現構文

The following tables describe the character expressions used by the regular expression to match patterns within a string, the pattern operators that specify how many times a pattern is matched and additional matching restrictions, and the last table specifies flags that can be included in the regular expression pattern that specify search behavior over multiple lines (these flags can also be specified using the NSRegularExpression.Options option flags. 以下の表は、ある文字列内部においてさまざまな類型(パターン)にマッチするために正規表現において使われる文字表現、どのくらい多くの回数あるパターンがマッチするかを、そして特別なマッチング制約を指定するパターン演算子を解説します、そして最後の表は正規表現パターンに含めることが出来るフラグを指定します、それは複数行にわたる検索挙動を指定します(これらのフラグはまた、NSRegularExpression.Optionsオプションフラグを使って指定されることができます)。

Regular Expression Metacharacters 正規表現メタ文字

Table 1 describe the character sequences used to match characters within a string. 表 1は、ある文字列内のなんらかの文字にマッチするために使われる文字表記を記述します。

Table 1 Regular Expression Metacharacters 表 1 正規表現メタ文字

Character Expression 文字表現

Description 説明

\a

Match a BELL, \u0007 ひとつのBELL、\u0007にマッチします

\A

Match at the beginning of the input. Differs from ^ in that \A will not match after a new line within the input. 入力の初めにマッチ。\Aはその入力範囲内においてひとつの新しい行の後にマッチしないということににおいて^と異なります。

\b, outside of a [Set] \b、[集合]外で

Match if the current position is a word boundary. Boundaries occur at the transitions between word (\w) and non-word (\W) characters, with combining marks ignored. For better word boundaries, see useUnicodeWordBoundaries. 現在の位置が語境界であるならば、マッチします。境界は、連結記号を無視して、語(\w)と非語(\W)文字の間で移行部で生じます。より良い語境界としては、useUnicodeWordBoundariesを見てください。

\b, within a [Set] \b、[集合]内で

Match a BACKSPACE, \u0008. バックスペース(\u0008)にマッチします。

\B

Match if the current position is not a word boundary. 現在の位置が単語境界でないならば、マッチします。

\cX

Match a control-X character control-X文字にマッチします

\d

Match any character with the Unicode General Category of Nd (Number, Decimal Digit.) Unicode一般カテゴリーのNd(数、10進数)であるどんな文字にでもにマッチします。

\D

Match any character that is not a decimal digit. 10進数でないどんな文字にでもマッチします。

\e

Match an ESCAPE, \u001B. ESCAPE\u001Bにマッチします。

\E

Terminates a \Q ... \E quoted sequence. \Q ... \E引用部を終了します。

\f

Match a FORM FEED, \u000C. FORM FEED(改ページ)、\u000Cにマッチします。

\G

Match if the current position is at the end of the previous match. 現在の位置が直前のマッチの終わりにあるならば、マッチします。

\n

Match a LINE FEED, \u000A. LINE FEED\u000A)にマッチします。

\N{UNICODE CHARACTER NAME}

Match the named character. 指定された文字にマッチします。

\p{UNICODE PROPERTY NAME}

Match any character with the specified Unicode Property. 指定された「Unicodeプロパティ」を持つどんな文字でもマッチします。

\P{UNICODE PROPERTY NAME}

Match any character not having the specified Unicode Property. 指定された「Unicodeプロパティ」を持っていないどんな文字にでもマッチします。

\Q

Quotes all following characters until \E. \Eまで全ての以降の文字を引用します。

\r

Match a CARRIAGE RETURN, \u000D. キャリッジ・リターン(\u000D)にマッチします。

\s

Match a white space character. White space is defined as [\t\n\f\r\p{Z}]. 空白文字にマッチします。空白は、 [\t\n\f\r\p{Z}]として定義されます。

\S

Match a non-white space character. 空白でない文字にマッチします。

\t

Match a HORIZONTAL TABULATION, \u0009. HORIZONTAL TABULATION(水平タブ)、\u0009にマッチします。

\uhhhh

Match the character with the hex value hhhh. 16進値hhhhをもつ文字にマッチします。

\Uhhhhhhhh

Match the character with the hex value hhhhhhhh. Exactly eight hex digits must be provided, even though the largest Unicode code point is \U0010ffff. 16進値hhhhhhhhでの文字にマッチします。たとえ最も大きいUnicodeコード点が\U0010ffffであるとしても、正確に8つの16進桁が提供されなければなりません。

\w

Match a word character. Word characters are [\p{Ll}\p{Lu}\p{Lt}\p{Lo}\p{Nd}]. 単語文字にマッチします。単語文字は、[\p{Ll}\p{Lu}\p{Lt}\p{Lo}\p{Nd}]です。

\W

Match a non-word character. 非単語文字にマッチします。

\x{hhhh}

Match the character with hex value hhhh. From one to six hex digits may be supplied. 16進値hhhhでの文字にマッチします。1から6桁までの16進数が、供給されることができます。

\xhh

Match the character with two digit hex value hh. 2桁16進値hhでの文字にマッチします。

\X

Match a Grapheme Cluster. Grapheme Cluster(書記素クラスタ)にマッチします。

\Z

Match if the current position is at the end of input, but before the final line terminator, if one exists. 現在の位置が入力の終わりにあるならばマッチします、しかし、もしそれが存在するならば、最終行終端子の前で。

\z

Match if the current position is at the end of input. 現在の位置が入力の終わりにあるならばマッチします。

\n

Back Reference. Match whatever the nth capturing group matched. n must be a number ≥ 1 and total number of capture groups in the pattern. 前方参照。第n番目の捕らえているグループがマッチしたもの何にでもマッチします。nは、「≥ 1」および「パターンでの捕獲グループの総数」である数でなければなりません。

\0ooo

Match an Octal character. ooo is from one to three octal digits. 0377 is the largest allowed Octal character. The leading zero is required; it distinguishes Octal constants from back references. 8進数の文字にマッチします。oooは、1から3桁までの8進数です。0377は、最大の許可された8進の文字です。先頭のゼロは必要です;それは、8進の定数と前方参照を区別します。

[pattern]

Match any one character from the pattern. パターンからの何らかの1つの文字にマッチします。

.

Match any character. See dotMatchesLineSeparators and the s character expression in Table 4. どんな文字にでもマッチします。dotMatchesLineSeparatorss文字表現を表 4で見てください。

^

Match at the beginning of a line. See anchorsMatchLines and the \m character expression in Table 4. 行の初めにマッチします。anchorsMatchLines\m文字表現を表 4で見てください。

$

Match at the end of a line. See anchorsMatchLines and the m character expression in Table 4. 行の終わりにマッチします。anchorsMatchLinesm文字表現を表 4で見てください。

\

Quotes the following character. 続く文字を引用します。 Characters that must be quoted to be treated as literals are * ?+ [ ( ) { } ^ $ | \ . /

Regular Expression Operators 正規表現演算子

Table 2 defines the regular expression operators. 表 2は正規表現演算子を定義します。

Table 2 Regular Expression Operators 表 2 正規表現演算子

Operator 演算子

Description 説明

|

Alternation. A|B matches either A or B. 代替。A|Bは、ABにマッチします。

* *

Match 0 or more times. Match as many times as possible. 0以上の繰り返しにマッチします。できるだけ多くの回数をマッチします。

+

Match 1 or more times. Match as many times as possible. 以上の繰り返しにマッチします。できるだけ多くの回数をマッチします。

?

Match zero or one times. Prefer one. 0か1の繰り返しにマッチします。1を優先して選びます。

{n}

Match exactly n times. 正確にn回にマッチします。

{n,}

Match at least n times. Match as many times as possible. 少なくともn回にマッチします。できるだけ多くの回数をマッチします。

{n,m}

Match between n and m times. Match as many times as possible, but not more than m. nm回の間のマッチ。可能なかぎり多くの、しかしmより多くでない、回数にマッチします。

*?

Match 0 or more times. Match as few times as possible. 0以上の繰り返しにマッチします。できるだけ少しの回数にしかマッチしません。

+?

Match 1 or more times. Match as few times as possible. 1以上の繰り返しにマッチします。できるだけ少しの回数にしかマッチしません。

??

Match zero or one times. Prefer zero. 0か1の繰り返しにマッチします。ゼロを優先します。

{n}?

Match exactly n times. きっちりn回にマッチします。

{n,}?

Match at least n times, but no more than required for an overall pattern match. 少なくともn回にマッチします、しかしパターン・マッチ全体的のために要求されるより多くではありません。

{n,m}?

Match between n and m times. Match as few times as possible, but not less than n. nとm回の間にマッチします。可能な限り少なくマッチします、しかしnより少なくではありません。

*+

Match 0 or more times. 0以上の繰り返しにマッチします。 Match as many times as possible when first encountered. Do not retry with fewer, even if overall match fails (possessive match).

++

Match 1 or more times (possessive match).

?+

Match zero or one times (possessive match).

{n}+

Match exactly n times. 正確にn回にマッチします。

{n,}+

Match at least n times (possessive match).

{n,m}+

Match between n and m times (possessive match).

(...)

Capturing parentheses. Range of input that matched the parenthesized subexpression is available after the match. 捕獲する括弧。括弧に入れられた正規表現部分にマッチした入力の範囲は、マッチ終了後に利用できます。

(?:...)

Non-capturing parentheses. Groups the included pattern, but does not provide capturing of matching text. Somewhat more efficient than capturing parentheses. 捕獲しない括弧。含まれるパターンをグループにします、しかしマッチしているテキストの捕獲を提供しません。捕獲する括弧よりいくぶん効率的なもの。

(?>...)

Atomic-match parentheses. First match of the parenthesized subexpression is the only one tried; if it does not lead to an overall pattern match, back up the search for a match to a position before the "(?>" 不可分マッチの括弧。括弧に入れられた正規表現部分の1回目のマッチが、試みられる唯一のものです;それが全体としてパターン・マッチに至らないならば、「(?>」の前の位置に検索を戻します

(?# ... )

Free-format comment (?# comment ). 自由な形式のコメント(?# comment )

(?= ... )

Look-ahead assertion. True if the parenthesized pattern matches at the current input position, but does not advance the input position. 前方指定。括弧に入れられたパターンが現在の入力での位置でマッチするならば真、しかし入力での位置を進めません。

(?! ... )

Negative look-ahead assertion. True if the parenthesized pattern does not match at the current input position. Does not advance the input position. 否定の前方指定。括弧に入れられたパターンが現在の入力での位置でマッチしないならば真。入力での位置を進めません。

(?<= ... )

Look-behind assertion. True if the parenthesized pattern matches text preceding the current input position, with the last character of the match being the input character just before the current position. Does not alter the input position. The length of possible strings matched by the look-behind pattern must not be unbounded (no * or + operators.) 後方指定。括弧に入れられたパターンが現在の入力位置の前のテキストにマッチするならば真、マッチの最後の文字がちょうど現在の位置の前の入力文字になる状態。入力位置を変えません。後方指定パターンによってマッチされる可能な文字列の長さは、限界がなければなりません(*または+演算子は不可)。

(?<! ... )

Negative Look-behind assertion. True if the parenthesized pattern does not match text preceding the current input position, with the last character of the match being the input character just before the current position. Does not alter the input position. The length of possible strings matched by the look-behind pattern must not be unbounded (no * or + operators.) 否定の後方指定。括弧に入れられたパターンが現在の入力位置の前のテキストにマッチしないならば真、マッチの最後の文字がちょうど現在の位置の前の入力文字になる状態。入力位置を変えません。後方指定パターンによってマッチされる可能な文字列の長さは、限界がなければなりません(*または+演算子は不可)。

(?ismwx-ismwx: ... )

Flag settings. Evaluate the parenthesized expression with the specified flags enabled or -disabled. The flags are defined in Flag Options. フラグ設定。指定されたフラグを有効にあるいは無効にして、括弧に入れられた表現を評価します。フラグは、「フラグ・オプション」で定義されます

(?ismwx-ismwx)

Flag settings. Change the flag settings. Changes apply to the portion of the pattern following the setting. For example, (?i) changes to a case insensitive match.The flags are defined in Flag Options. フラグ設定。フラグ設定を変更します。変更は、設定に続いているパターンの部分に適用されます。例えば、(?i)は、大文字小文字等を考慮しないマッチへ変更します。フラグは、「フラグ・オプション」で定義されます

Template Matching Format テンプレートマッチング書式

The NSRegularExpression class provides find-and-replace methods for both immutable and mutable strings using the technique of template matching. Table 3 describes the syntax. NSRegularExpressionクラスは、検索置換メソッドをテンプレート(ひな形)マッチングのテクニックを使用して不変および可変の文字列両方のために用意します。表 3は、構文を記述します。

Table 3 Template Matching Format 表 3 テンプレートマッチング書式

Character 文字

Descriptions 記述

$n

The text of capture group n will be substituted for $n. n must be >= 0 and not greater than the number of capture groups. A $ not followed by a digit has no special meaning, and will appear in the substitution text as itself, a $. 捕獲グループnのテキストは、$nで代用されます。nは、>= 0で捕獲グループの数より大きくてはなりません。桁が続かない$は、特別な意味を持たず、$、それ自身として置換テキストにおいて見えます。

\

Treat the following character as a literal, suppressing any special meaning. Backslash escaping in substitution text is only required for '$' and '\', but may be used on any other character without bad effects. 続く文字を文字通りに、あらゆる特別な意味を抑制して扱います。置換テキストにおいてバックスラッシュ・エスケープは『$』と『\』のために必要であるだけです、しかし悪い効果なしに他のどの文字についても使われることができます。

The replacement string is treated as a template, with $0 being replaced by the contents of the matched range, $1 by the contents of the first capture group, and so on. Additional digits beyond the maximum required to represent the number of capture groups will be treated as ordinary characters, as will a $ not followed by digits. Backslash will escape both $ and \. 置き換え文字列はテンプレートとしてみなされ、$0はマッチされた範囲の内容に、$1は最初の捕獲グループの内容等々によって取り替えられます。捕獲グループの数を表すのに必要とされる最大を越えた追加の桁、そして桁が続かない$もまた普通の文字とみなされます。バックスラッシュは、$\をエスケープします。

Flag Options フラグ・オプション

The following flags control various aspects of regular expression matching. These flag values may be specified within the pattern using the (?ismx-ismx) pattern options. Equivalent behaviors can be specified for the entire pattern when an NSRegularExpression is initialized, using the NSRegularExpression.Options option flags. 以下のフラグは、正規表現マッチングのさまざまな面を制御します。これらのフラグ値は、パターンの範囲内で(?ismx-ismx)パターン・オプションを使って指定されことができます。同等の挙動は、パターン全体に対してNSRegularExpressionが初期化される時に、NSRegularExpression.Optionsオプション・フラグを使って指定されることができます。

Table 4 Flag Options 表 4 フラグ・オプション

Flag (Pattern) フラグ(パターン)

Description 説明

i

If set, matching will take place in a case-insensitive manner. 設定されるならば、マッチングは大文字と小文字の区別をしない方法で発生します。

x

If set, allow use of white space and #comments within patterns 設定されるならば、パターンの範囲内で空白と#commentsの使用を許します

s

If set, a "." in a pattern will match a line terminator in the input text. By default, it will not. Note that a carriage-return / line-feed pair in text behave as a single line terminator, and will match a single "." in a regular expression pattern 設定されるならば、パターン中の「.」は入力されたテキストで行終止にマッチします。初期値では、それはそうしません。テキストの中のcarriage-return / line-feed 対が1つの行終止としてふるまって、正規表現パターンで単一の「.」にマッチすることに注意してください

m

Control the behavior of "^" and "$" in a pattern. By default these will only match at the start and end, respectively, of the input text. If this flag is set, "^" and "$" will also match at the start and end of each line within the input text. パターンで「^」と「$」の挙動を制御します。初期値では、これらは、それぞれ、入力されたテキストの始まりと終わりにマッチするだけです。このフラグが設定されるならば、「^」と「$」は、入力されたテキストの範囲内でそれぞれの行の始まりと終わりにもマッチします。

w

Controls the behavior of \b in a pattern. If set, word boundaries are found according to the definitions of word found in Unicode UAX 29, Text Boundaries. By default, word boundaries are identified by means of a simple classification of characters as either “word” or “non-word”, which approximates traditional regular expression behavior. The results obtained with the two options can be quite different in runs of spaces and other non-word characters. パターンで\bの挙動を制御します。設定されるならば、語境界はUnicode UAX 29: Text Boundaries(テキスト境界)で見つけられる語の定義によって見つけられます。初期値では、語境界は、“単語”または“非単語”どちらかとしての文字の単純な分類方法によって確認されます、それはおおよそ従来の正規表現挙動です。2つのオプションで得られる結果は、空白と他の非語文字の連続において、全く異なることがありえます。

Performance 性能

NSRegularExpression implements a nondeterministic finite automaton matching engine. As such, complex regular expression patterns containing multiple * or + operators may result in poor performance when attempting to perform matches — particularly failing to match a given input. For more information, see the “Performance Tips” section of the ICU User Guide. NSRegularExpressionは、ある非決定性有限オートマトンマッチエンジンを実装します。そういうことで、*+演算子を含む複雑な正規表現式は、マッチ実行を試みようとすれば — とりわけ与えられた入力にマッチするのに失敗すれば、貧弱な性能という結果になります。さらなる情報として、ICUユーザガイドの“Performance Tips”の節を見てください。

ICU License ICUライセンス

Table 1, Table 2, Table 3, Table 4 are reproduced from the ICU User Guide, Copyright (c) 2000 - 2009 IBM and Others, which are licensed under the following terms: 表 1表 2表 3表 4は、「ICUユーザー・ガイド」、著作権(c) 2000-2009 IBMその他、から転載されます、それは次の条項の下で認可されます:

COPYRIGHT AND PERMISSION NOTICE

Copyright (c) 1995-2009 International Business Machines Corporation and others. All rights reserved.

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, provided that the above copyright notice(s) and this permission notice appear in all copies of the Software and that both the above copyright notice(s) and this permission notice appear in supporting documentation.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT OF THIRD PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.

Except as contained in this notice, the name of a copyright holder shall not be used in advertising or otherwise to promote the sale, use or other dealings in this Software without prior written authorization of the copyright holder.

All trademarks and registered trademarks mentioned herein are the property of their respective owners.

Topics 話題

Creating Regular Expressions 正規表現を作成する

Getting the Regular Expression and Options 正規表現とオプションを得る

Searching Strings Using Regular Expressions 正規表現を使った文字列検索

Replacing Strings Using Regular Expressions 正規表現を使って文字列を置換する

Escaping Characters in a String 文字列中の文字をエスケープする

Custom Replace Functionality カスタムの置換機能性

Constants 定数

Relationships 関係

Inherits From 継承元

Conforms To 次に準拠

See Also 参照

Pattern Matching パターンマッチング