Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add about absence (absent) operator #833

Merged
merged 2 commits into from
Nov 29, 2017
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion refm/doc/news/2_4_0.rd
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,9 @@
for UTR #51 Unicode Emoji, Version 4.0 emoji zwj sequences.
* [[m:Regexp#match?]] を追加 [[feature:8110]]
true/false を返し、バックリファレンスを生成しません。
* Onigmo 6.0.0 に更新
* Onigmo 6.0.0 に更新 (Ruby 2.4.0)
* Onigmo 6.1.1 に更新 (Ruby 2.4.1)
* 非包含オペレータ(absence operator)をサポートしました [[url:https://github.com/k-takata/Onigmo/issues/82]]

* [[c:Regexp]]/[[c:String]]: Unicodeのバージョンを8.0.0から9.0.0に更新しました [[feature:12513]]

Expand Down
18 changes: 18 additions & 0 deletions refm/doc/spec/regexp19
Original file line number Diff line number Diff line change
Expand Up @@ -684,6 +684,20 @@ d,a,u のオプションは正規表現直後に置く方式では指定がで
/x\ y/x.match("x y") # => #<MatchData "x y">
\s や \p{Space} のような文字クラスを使うのが良い場合も多いでしょう。

#@since 2.4.0
=== 非包含オペレータ (absence operator) (実験的)
(?~式) という記法で、式にマッチする文字列を含まない任意の文字列にマッチします。
#@until 2.5.0
(Ruby 2.4.1 で更新された Onigmo に含まれる機能のため、Ruby 2.4.0 では使えません。)
#@end

例えば (?~abc) は "", "ab", "aab", "abb", "ccdd" などにはマッチしますが、
"abc", "aabc", "ccabcdd" などにはマッチしません。

/\/\*(?~\*\/)\*\// は C スタイルのコメントにマッチします。
例えば "/**/", "/* foo bar */" など。

#@end
=== 一覧
Rubyで利用可能なメタ文字、メタ文字列の一覧です。

Expand Down Expand Up @@ -792,6 +806,10 @@ Rubyで利用可能なメタ文字、メタ文字列の一覧です。
* (?on-off:pat) patの間だけ on オプションを有効にし、offオプションを無効にする
コメント
* (?#comment here) コメント
#@since 2.4.0
非包含オペレータ
* (?~pat) 非包含オペレータ
#@end

=== 特殊変数
パターンマッチしたときに、以下の特殊変数にマッチの情報をセットします。
Expand Down