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

ES2020: String.prototype.matchAll #1182

Closed
1 task
azu opened this issue Jun 20, 2020 · 8 comments · Fixed by #1250
Closed
1 task

ES2020: String.prototype.matchAll #1182

azu opened this issue Jun 20, 2020 · 8 comments · Fixed by #1250

Comments

@azu
Copy link
Collaborator

azu commented Jun 20, 2020

https://jsprimer.net/basic/string/#match-by-regexp
でexecを使ったmatchAllを実装している。
これをmatchAllを使ったやり方を紹介する。
exec自体はよく見かけるから、残す感じがする。
matchAll自体をセクションとして入れるとかを検討する

String.prototype.matchAll() - JavaScript | MDN

ES2021で replaceAllが来ることも念頭にした構成を作る

やること

@azu azu mentioned this issue Jun 20, 2020
12 tasks
@azu
Copy link
Collaborator Author

azu commented Jun 28, 2020

String.prototype.replaceAll() - JavaScript | MDN
replaceAllってなんかreplaceとの違いは 正規表現を使わなくて global replaceできる点なんだと思うんだけど、
replaceAll も正規表現とか関数とか渡せたりして結構難しいな

@azu
Copy link
Collaborator Author

azu commented Jun 28, 2020

tc39/proposal-string-replaceall: ECMAScript proposal: String.prototype.replaceAll
モチベーションはやっぱり正規表現として解釈されない replace all なので、それ意外はおまけって感じ

@azu
Copy link
Collaborator Author

azu commented Jun 28, 2020

今のmatchとexecは

  • match
  • match with g
  • exec
  • exec with g

となってる。

https://jsprimer.net/basic/string/#match-by-regexp

これは matchAllが入ったら - match with g と exec with g はいらない気がする。
挙動的に単純に難しいし。 //gの場合はmatchAllを使いましょうの方が単純。
match with //g が必要なケースは存在するのかな? matchAllに全部置き換えできそうな気がする

@azu
Copy link
Collaborator Author

azu commented Aug 29, 2020

matchAll はiteratorであるので、今後iteratorが増えていくなら、もうちょっとiterator分を増やしたほうがいい気がするなー

@azu
Copy link
Collaborator Author

azu commented Aug 29, 2020

* match

* match with g

* exec

* exec with g

コレ自体はまだ残す必要があるきがするけど、matchAllとどっちを先にだすか

matchAll 紹介 → むかしはこう書いてた
exec → これを改善するためにmatchAllが入った

とりあえずざっくり書いてみる

@azu
Copy link
Collaborator Author

azu commented Aug 29, 2020

String.prototype.matchAll · V8
これは

exec → これを改善するためにmatchAllが入った
こっちのパターン

@azu
Copy link
Collaborator Author

azu commented Aug 29, 2020

単発

  • match
  • exec

複数

  • match with g
  • exec with g
  • matchAll

としたほうがよさそう

https://jsprimer.net/basic/string/#match-by-stringと関係してくるため
こっちも

  • 単発
  • 複数
    と分けて書く

@azu
Copy link
Collaborator Author

azu commented Aug 29, 2020

capture groupがないと微妙に分かりにくい気がするなー

いっそ RegExp#exec を単発でやる必要がないの削除(移動)してよさそう

  • match 単発
  • match /g/ 複数
  • キャプチャの場合
  • match /g/ だとできない
  • exec /g/ でやっていた
  • matchAllでかいけつできる

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant