正規表現パターンに最初に一致した部分文字列の範囲をラップしたオブジェクト(BMatchResultオブジェクト)を返します。
また、パターン中の丸括弧に一致した部分文字列を、BRegexp >> hasNext で有無のチェック、 BRegexp >> nextResult で取得することができます。
返り値の BMatchResult オブジェクトに isMatched メッセージを送ると、一致した部分があったか否かを判別することができます。
また、BMatchResult オブジェクトに asString 、もしくは extractSubstringFrom: メッセージを送ると一致した文字列を取得することができます。
ただし、asString では BRegexp オブジェクトのリリース後では正しい文字列を取得することができません。
- メソッド: BRegexp >> match:from:
- 第1引数: String : 正規表現パターンの文字列
- 第2引数: String : 対象文字列
- 返り値: BMatchResult : 正規表現パターンに一致した部分文字列の範囲をラップしたオブジェクト
| pattern target reg result |
reg := BRegexp default.
pattern := '/(\d{1,4})-(\d{1,4})-(\d{4})/'.
target := '03-765-5678'.
result := reg match: pattern from: target.
result isMatched
ifTrue: [Transcript cr; show: result asString]
ifFalse: [Transcript cr; show: 'not matched'].
[[reg hasNext] whileTrue: [
result := reg nextResult.
Transcript cr; show: result asString.
]] ensure: [reg release].
Transcript ===> 03-765-5678
Transcript ===> 03
Transcript ===> 765
Transcript ===> 5678