Regular Expressionスレです。
質問する場合は必ず実装言語や処理系ソフトウェア名を示してください。
前スレ
Regular Expression(正規表現) Part13
http://echo.2ch.net/test/read.cgi/tech/1415149975/
次スレは>>980宜しく
天ぷら等2以降
Regular Expression(正規表現) Part14 [無断転載禁止]©2ch.net
レス数が1000を超えています。これ以上書き込みはできません。
1デフォルトの名無しさん
2017/03/15(水) 02:04:35.47ID:e01p03UP921デフォルトの名無しさん
2019/07/22(月) 01:27:11.95ID:dN38X5eV >>920
おおサンクス。
ただ、それって 2007/05/25 より後だから、別件だね。
無駄に喧嘩してるなあ。
内容はkkos氏の方が正しい。
鬼車は最速を目指したライブラリなのだから、無駄なことは出来る限り省かなければならない。
そもそもスクリプト言語で不完全な文字列って、バイト列を直接与えるとかしないと出来ないはずだし、
その場合にはRuby側でチェックしておけ、というのはその通りで、極めて妥当な要求だ。
Rubyなんてmutable stringなのだから最初に必ずコピーが必要で、普通はその時にやればいいだけ。
その方が今時の型安全にも合うし。
それを「実は僕も問題だと思ってたんだよね」みたいな受け方をするからそりゃ不信感が募る。
これは完全にMatzが糞で、実はC流のグダグダコードを書いていて、
どこで何をするべきか分かってないのだと思う。
そしてRuby界隈ではMatzは変に神格化されてて裸の王様化してる、ってとこだろう。
878の動作結果を見ても、誰も問題だとは指摘出来ないようだし。
これはkkos氏が言っているとおりがそのままで、普通は、というか本当は、
1. Rubyは rb_enc_mbclen(p,end,enc) で記述していたが、
2. 鬼車が rb_enc_mbclen(p,enc) で記述されていることに気づき、
3. 何で end が無いのか確認して、
4. Ruby側にチェックをつける
という流れになる。
1が無いのに、「し、知ってたし」みたいなことを言うから「嘘つくな」になる。
つってもこういうちょっとズルいというか卑怯というか、絶対俺のバグは認めないマンは残念ながら普通にいるから、
いちいち問いただしても始まらない。ただ、多分、kkos氏が切れたのはその後、
> それはそれとして、鬼車を呼ぶ前に「一文字を完成していない不完全なバイト列は含まない」ことをチェックするのはかなりコストが高いのですが、
これだとは思う。鬼車側でチェックしたらコストが安い訳でもないのに、これはない。
これはコイツとは一緒にはやれない、という結論を出すには十分だ。
本来Aでやるべき事をBでやる、みたいなことをすると、コードが一気に劣化していく。
長いこと保守するつもりなら絶対に飲めない。実際、鬼車は今も保守されているし、kkos氏の判断は妥当だ。
おおサンクス。
ただ、それって 2007/05/25 より後だから、別件だね。
無駄に喧嘩してるなあ。
内容はkkos氏の方が正しい。
鬼車は最速を目指したライブラリなのだから、無駄なことは出来る限り省かなければならない。
そもそもスクリプト言語で不完全な文字列って、バイト列を直接与えるとかしないと出来ないはずだし、
その場合にはRuby側でチェックしておけ、というのはその通りで、極めて妥当な要求だ。
Rubyなんてmutable stringなのだから最初に必ずコピーが必要で、普通はその時にやればいいだけ。
その方が今時の型安全にも合うし。
それを「実は僕も問題だと思ってたんだよね」みたいな受け方をするからそりゃ不信感が募る。
これは完全にMatzが糞で、実はC流のグダグダコードを書いていて、
どこで何をするべきか分かってないのだと思う。
そしてRuby界隈ではMatzは変に神格化されてて裸の王様化してる、ってとこだろう。
878の動作結果を見ても、誰も問題だとは指摘出来ないようだし。
これはkkos氏が言っているとおりがそのままで、普通は、というか本当は、
1. Rubyは rb_enc_mbclen(p,end,enc) で記述していたが、
2. 鬼車が rb_enc_mbclen(p,enc) で記述されていることに気づき、
3. 何で end が無いのか確認して、
4. Ruby側にチェックをつける
という流れになる。
1が無いのに、「し、知ってたし」みたいなことを言うから「嘘つくな」になる。
つってもこういうちょっとズルいというか卑怯というか、絶対俺のバグは認めないマンは残念ながら普通にいるから、
いちいち問いただしても始まらない。ただ、多分、kkos氏が切れたのはその後、
> それはそれとして、鬼車を呼ぶ前に「一文字を完成していない不完全なバイト列は含まない」ことをチェックするのはかなりコストが高いのですが、
これだとは思う。鬼車側でチェックしたらコストが安い訳でもないのに、これはない。
これはコイツとは一緒にはやれない、という結論を出すには十分だ。
本来Aでやるべき事をBでやる、みたいなことをすると、コードが一気に劣化していく。
長いこと保守するつもりなら絶対に飲めない。実際、鬼車は今も保守されているし、kkos氏の判断は妥当だ。
922デフォルトの名無しさん
2019/08/01(木) 15:57:12.21ID:BVNOJ7mG >>789やってくれる人はいないか〜
2ch全盛期なら誰かしらやってくれた可能性高いけどすっかり寂れたな
onigmoに興味があるならtakata氏の日記を読破してみてはどうかな
作りながら考えてたことが分かって面白かったよ
2ch全盛期なら誰かしらやってくれた可能性高いけどすっかり寂れたな
onigmoに興味があるならtakata氏の日記を読破してみてはどうかな
作りながら考えてたことが分かって面白かったよ
923デフォルトの名無しさん
2019/08/24(土) 12:41:17.80ID:fR0bFJ1E perlで
(?<=(aa|bb))c
ならokだが
(?<=(aa|bbb))c
だとVariable length lookbehind not implementedになるの納得いかないなー
確かに戻り読み部分の長さに複数の可能性があるけど明らかに有限じゃん
秀丸のHmJre.dllだと通るようだ
(?<=(aa|bb))c
ならokだが
(?<=(aa|bbb))c
だとVariable length lookbehind not implementedになるの納得いかないなー
確かに戻り読み部分の長さに複数の可能性があるけど明らかに有限じゃん
秀丸のHmJre.dllだと通るようだ
924デフォルトの名無しさん
2019/08/24(土) 13:46:10.60ID:6nD2xE5w (?<=(aa.*|bbb))c
925デフォルトの名無しさん
2019/08/25(日) 15:17:23.04ID:GRZE+Rz9 (?<=aa|bbb)c
926デフォルトの名無しさん
2019/09/01(日) 12:33:19.59ID:fodjUzDJ JS(ES2017)です
「貫樣」みたいな、中国語でしか使われないような怪しい漢字を弾きたい
(日本語で使われる漢字のみ許可したい この場合は「貫」だけ残して「樣」は消したい)
のですが
CJKとか言って一緒くたになっている以上、Unicode範囲指定などで判別することはできないですかね…?
「貫樣」みたいな、中国語でしか使われないような怪しい漢字を弾きたい
(日本語で使われる漢字のみ許可したい この場合は「貫」だけ残して「樣」は消したい)
のですが
CJKとか言って一緒くたになっている以上、Unicode範囲指定などで判別することはできないですかね…?
927926
2019/09/01(日) 12:38:35.03ID:fodjUzDJ 「樣」は一応日本語でも使うみたいですね…
とりあえず常用漢字じゃなければ弾くくらいでもいいのですが
常用漢字表を作って比較するくらいしかない…のかな?
とりあえず常用漢字じゃなければ弾くくらいでもいいのですが
常用漢字表を作って比較するくらいしかない…のかな?
928デフォルトの名無しさん
2019/09/01(日) 13:31:25.10ID:kCJZVLuH929デフォルトの名無しさん
2019/09/01(日) 13:35:35.35ID:kCJZVLuH ねむい
http://kanji.zinbun.kyoto-u.ac.jp/~yasuoka/CJK/gb2312-80.gif
http://kanji.zinbun.kyoto-u.ac.jp/~yasuoka/index-j.html
http://kanji.zinbun.kyoto-u.ac.jp/~yasuoka/CJK/gb2312-80.gif
http://kanji.zinbun.kyoto-u.ac.jp/~yasuoka/index-j.html
930デフォルトの名無しさん
2019/09/01(日) 18:46:39.31ID:VXfAHt8z >>927
樣は様の旧字で現在でも許容字体扱いだから「常用漢字表」にも
出て来る。
https://ja.wikipedia.org/wiki/%E5%B8%B8%E7%94%A8%E6%BC%A2%E5%AD%97%E4%B8%80%E8%A6%A7
>928-929みたいなのはあくまでコンピューター用のコードの
まとまりの話だから常用漢字か否かは区別していない。
上のリンクのウィキの本表をエクセルにコピーして2列目の
通用字体だけを残して改行を消してやり、それと平仮名や
記号を除外規定にして残り全部消すとかなら正規表現だけでも
さっさと終わるんじゃないかな。
JISの範囲内だけがほしいならシフトJISで保存したら他は
疑問符になるだろうからそれをまとめて削除したらおしまいだろうが
繁体字の樣は残る。簡体字の[木羊]は消える。
樣は様の旧字で現在でも許容字体扱いだから「常用漢字表」にも
出て来る。
https://ja.wikipedia.org/wiki/%E5%B8%B8%E7%94%A8%E6%BC%A2%E5%AD%97%E4%B8%80%E8%A6%A7
>928-929みたいなのはあくまでコンピューター用のコードの
まとまりの話だから常用漢字か否かは区別していない。
上のリンクのウィキの本表をエクセルにコピーして2列目の
通用字体だけを残して改行を消してやり、それと平仮名や
記号を除外規定にして残り全部消すとかなら正規表現だけでも
さっさと終わるんじゃないかな。
JISの範囲内だけがほしいならシフトJISで保存したら他は
疑問符になるだろうからそれをまとめて削除したらおしまいだろうが
繁体字の樣は残る。簡体字の[木羊]は消える。
931デフォルトの名無しさん
2019/09/01(日) 21:04:09.80ID:fO6VcsLE Google謹製の正規表現ライブリ「re2」でググったら「バイオハザード2 RE:2」が検索上位に来るのどうにかならない?
932デフォルトの名無しさん
2019/09/01(日) 22:01:25.54ID:Zrnas7uJ >>931
s/^(.+)でググったら「バイオハザード2 RE:2」が検索上位に来るのどうにかならない?$/$1/
s/^(.+)でググったら「バイオハザード2 RE:2」が検索上位に来るのどうにかならない?$/$1/
933デフォルトの名無しさん
2019/09/01(日) 22:50:02.12ID:8GDP8quV RE2 regex とか RE2 正規表現 とかでググれば
934デフォルトの名無しさん
2019/09/10(火) 22:48:57.92ID:CokwQGf+ 直前の文字が1回以上出現することが確実なケースで、仮に0回の出現として考慮しても問題がないという場合に、
+ではなく*で正規表現を記述する理由はありますか?
例えば、慣例として*のほうを使うとか、*とするとマッチしない場合のみ+を使うとかそういう
+ではなく*で正規表現を記述する理由はありますか?
例えば、慣例として*のほうを使うとか、*とするとマッチしない場合のみ+を使うとかそういう
935デフォルトの名無しさん
2019/09/10(火) 23:21:08.02ID:1dbF51qB 0回も許容するなら+ではなく*にする理由は0回も許容するからとしか
936デフォルトの名無しさん
2019/09/10(火) 23:26:41.78ID:L5QX1JAH 具体例で示してくれんとなんか曖昧でよくわからんね
937デフォルトの名無しさん
2019/09/11(水) 12:05:55.89ID:zFEVPQj4 >1回以上出現することが確実なケース
>仮に0回の出現として考慮しても問題がない
矛盾してるな
>仮に0回の出現として考慮しても問題がない
矛盾してるな
938デフォルトの名無しさん
2019/09/11(水) 15:12:05.49ID:wb8QVF41939デフォルトの名無しさん
2019/09/11(水) 16:12:55.15ID:h8Pfy2ne940デフォルトの名無しさん
2019/09/12(木) 02:26:26.53ID:xpiKRNxb やっぱ質問して放置か、教える側も学習すべきだな
まともな質問じゃないと思ったらスルーでいい
まともな質問じゃないと思ったらスルーでいい
941デフォルトの名無しさん
2019/09/12(木) 04:33:29.68ID:+6m2JHnd 別におかしな質問じゃないだろ
942デフォルトの名無しさん
2019/09/12(木) 06:58:37.97ID:1ik9S0iw いや普通におかしいだろ
なんか無理矢理の条件考えて論争させようとしてるような気がする
なんか無理矢理の条件考えて論争させようとしてるような気がする
943デフォルトの名無しさん
2019/09/12(木) 08:21:20.40ID:xpiKRNxb 自分なら人にこういう質問レスを書くかなって考えてみて絶対書かないと
思うものにはレス付けないのがいいかもね
説明不足で意味不明なものとかも
思うものにはレス付けないのがいいかもね
説明不足で意味不明なものとかも
944デフォルトの名無しさん
2019/09/12(木) 09:22:01.93ID:TOasMGF3 ●Regular Expressionの使用環境
Mery
●検索か置換か?
置換
●説明
属性内のアルファベット小文字を削除
●対象データ
id="105I42b 104I41b"
id="99E65e 95B43d 92B87d"
id="97B22d 95D18a 93B22c 93E23b"
●希望する結果
id="105I42 104I41"
id="99E65 95B43 92B87"
id="97B22 95D18 93B22 93E23"
id="((\d+[A-Z]\d+)[a-z] ?){2,}"で検索は出来たのですが置換が思い浮かびません
Mery
●検索か置換か?
置換
●説明
属性内のアルファベット小文字を削除
●対象データ
id="105I42b 104I41b"
id="99E65e 95B43d 92B87d"
id="97B22d 95D18a 93B22c 93E23b"
●希望する結果
id="105I42 104I41"
id="99E65 95B43 92B87"
id="97B22 95D18 93B22 93E23"
id="((\d+[A-Z]\d+)[a-z] ?){2,}"で検索は出来たのですが置換が思い浮かびません
945デフォルトの名無しさん
2019/09/12(木) 10:00:21.41ID:bJPykHLq わかりやすいように、できるだけそのまま書くならこうかな
●検索文字列
(id="|\G )((\d+[A-Z]\d+))[a-z]
●置換文字列
\1\2
●検索文字列
(id="|\G )((\d+[A-Z]\d+))[a-z]
●置換文字列
\1\2
946デフォルトの名無しさん
2019/09/12(木) 10:04:35.65ID:bJPykHLq 置換に問題は無いけど()が二重になってたミス修正
(id="|\G )(\d+[A-Z]\d+)[a-z]
(id="|\G )(\d+[A-Z]\d+)[a-z]
947デフォルトの名無しさん
2019/09/12(木) 10:30:50.86ID:TOasMGF3 >946
出来ました!
ありがとうございます。
田中哲スペシャルっていうやり方なのでしょうか
出来ました!
ありがとうございます。
田中哲スペシャルっていうやり方なのでしょうか
948デフォルトの名無しさん
2019/09/12(木) 11:08:37.62ID:bJPykHLq \Gは照合開始位置と呼ばれる物で、マッチした箇所の後の境界にマッチしてくれるので
さっきのように(特定の文字列or前回置換しところ)の後に置換したい文字列があるときとかに便利で定番
田中哲スペシャルは\gで同じ表現をもう一回使うって奴だから違うかな
さっきのように(特定の文字列or前回置換しところ)の後に置換したい文字列があるときとかに便利で定番
田中哲スペシャルは\gで同じ表現をもう一回使うって奴だから違うかな
949デフォルトの名無しさん
2019/09/12(木) 11:58:31.87ID:TOasMGF3 >948
勉強になります。
ちなみに最初の値にはアルファベットがついてないケースだと拾えなかったのですが
id="97B22 95D18a 93B22c 93E23b"
対応策ありますでしょうか?
勉強になります。
ちなみに最初の値にはアルファベットがついてないケースだと拾えなかったのですが
id="97B22 95D18a 93B22c 93E23b"
対応策ありますでしょうか?
950デフォルトの名無しさん
2019/09/12(木) 12:04:38.94ID:xpiKRNxb 自分ならこの時点でスルー
\Gは文頭にもマッチするから誤爆対策を忘れずに
\Gは文頭にもマッチするから誤爆対策を忘れずに
951デフォルトの名無しさん
2019/09/12(木) 15:04:33.55ID:bJPykHLq952デフォルトの名無しさん
2019/09/12(木) 18:04:49.29ID:TOasMGF3 >951
ヒントありがとうございます。
残りは自分でがんばってみます。
ヒントありがとうございます。
残りは自分でがんばってみます。
953デフォルトの名無しさん
2019/09/12(木) 18:08:37.95ID:EfYu2rO4 文字列 "プログラマー" を "プロクライマー" に書き換える正規表現を教えて下さい
954デフォルトの名無しさん
2019/09/12(木) 21:50:17.55ID:Jdu1U3XN そこにソースがあるから登るんだ。
955デフォルトの名無しさん
2019/09/12(木) 22:19:07.70ID:cqw0/uFd 正規表現の使い方じゃなく作り方、バックトラックなど理論から解説している書籍やそれに準ずるサイトなど知っていたらご教示ください。
こうやればこうなるよ、こういうときはこうすればいいんだよ的な学習では身に付かなくて…
こうやればこうなるよ、こういうときはこうすればいいんだよ的な学習では身に付かなくて…
956デフォルトの名無しさん
2019/09/12(木) 22:56:30.12ID:Yy9Clfy1 自分が参考にしたのはここだったかな
http://fussy.web.fc2.com/algo/search5_regex.htm
実装の仕方がある程度分かれば鬼車の作者さんのブログ(rubyの一件以前の記事)も参考になると思う
http://fussy.web.fc2.com/algo/search5_regex.htm
実装の仕方がある程度分かれば鬼車の作者さんのブログ(rubyの一件以前の記事)も参考になると思う
957デフォルトの名無しさん
2019/09/12(木) 23:14:33.93ID:Uy9QyXie ありがとうございます!
rubyの一件って何ですか?(何て検索したらいいですか?)
rubyの一件って何ですか?(何て検索したらいいですか?)
958デフォルトの名無しさん
2019/09/12(木) 23:43:24.49ID:Yy9Clfy1 Rubyの作者さんと何かあったようで嫌気が差したのかそれ以後ブログで正規表現のことを
取り上げる頻度がめっきり減っちゃったんですよ
取り上げる頻度がめっきり減っちゃったんですよ
959デフォルトの名無しさん
2019/09/13(金) 08:32:54.25ID:sQZEDK+j960デフォルトの名無しさん
2019/09/13(金) 10:47:34.78ID:wKEqF87n961デフォルトの名無しさん
2019/09/13(金) 11:54:40.09ID:X5DxpBbM 正規表現はどの言語でも共通で使えますか?それともちょっと違ったりしますか?
962デフォルトの名無しさん
2019/09/13(金) 12:02:22.73ID:KuW4wLhZ ちょっと違ったりします
963デフォルトの名無しさん
2019/09/13(金) 13:25:46.31ID:8XwQqyT8 Ruby で作った。
一旦、パターンで一致させてから、一致した行だけを変換した。
ただし、同じ行に、id="〜" が複数あると、バグる!
src = <<'EOT'
id="aAxy Xz"
あ
id=""
id="9"
id="9y"
EOT
# id=" で始まって、" 以外の文字が続いて、" で終わる
re = /id\=\"([^\"]+)\"/ # ( ) 内は、$1
dest = src.gsub( re ) do |line|
'id="' + $1.delete( "a-z" ) + '"'
end
print dest
出力
id="A X"
あ
id=""
id="9"
id="9"
一旦、パターンで一致させてから、一致した行だけを変換した。
ただし、同じ行に、id="〜" が複数あると、バグる!
src = <<'EOT'
id="aAxy Xz"
あ
id=""
id="9"
id="9y"
EOT
# id=" で始まって、" 以外の文字が続いて、" で終わる
re = /id\=\"([^\"]+)\"/ # ( ) 内は、$1
dest = src.gsub( re ) do |line|
'id="' + $1.delete( "a-z" ) + '"'
end
print dest
出力
id="A X"
あ
id=""
id="9"
id="9"
965デフォルトの名無しさん
2019/09/16(月) 02:45:59.31ID:dK4dr8mE JSで
101 dogs
7 little goats
30 8 year old humans
↑をそれぞれ
["101", "dogs"]
["7", "little goats"]
["30", "8 year old humans"]
と切り分けるにはどんな正規表現を使えばよいでしょうか?
["7", " ", "little goats"]のような形でもかまいません
.match(/^\d+\s|.+$/)
だと
["7 ", "little goats"]
になってしまい、数字のあとの余計な半角スペースをあとで取り除かなければならなくなるのがなんか嫌で…
101 dogs
7 little goats
30 8 year old humans
↑をそれぞれ
["101", "dogs"]
["7", "little goats"]
["30", "8 year old humans"]
と切り分けるにはどんな正規表現を使えばよいでしょうか?
["7", " ", "little goats"]のような形でもかまいません
.match(/^\d+\s|.+$/)
だと
["7 ", "little goats"]
になってしまい、数字のあとの余計な半角スペースをあとで取り除かなければならなくなるのがなんか嫌で…
966デフォルトの名無しさん
2019/09/16(月) 02:59:29.74ID:/xGIA7r1 正規表現を使えないなら文字列操作でやればいいだけ
正規表現を使いこなせてない人が使うとバグの温床になるからお勧めしない
正規表現を使いこなせてない人が使うとバグの温床になるからお勧めしない
967デフォルトの名無しさん
2019/09/16(月) 07:18:26.85ID:m2l8x1P1 >>965
.split(' ', 2)
.split(' ', 2)
968デフォルトの名無しさん
2019/09/16(月) 12:07:55.69ID:oN5KVYJd Ruby では、
chomp で、末尾の改行を削除する。
split の2 は、分割の最大数
text = <<'TEXT'
101 dogs
30 8 year old humans
TEXT
p ary = text.lines( chomp: true ).map { |line| line.split( " ", 2 ) }
出力
[["101", "dogs"], ["30", "8 year old humans"]]
chomp で、末尾の改行を削除する。
split の2 は、分割の最大数
text = <<'TEXT'
101 dogs
30 8 year old humans
TEXT
p ary = text.lines( chomp: true ).map { |line| line.split( " ", 2 ) }
出力
[["101", "dogs"], ["30", "8 year old humans"]]
969デフォルトの名無しさん
2019/09/16(月) 15:25:40.41ID:YU5GpdCi JSでは、
["30", "8 year old humans"]
ではなく
["30","8"]
となる
limitは、分割結果の制限であり、見つかった要素の数をそこまでで打ち切る
["30", "8 year old humans"]
ではなく
["30","8"]
となる
limitは、分割結果の制限であり、見つかった要素の数をそこまでで打ち切る
970968
2019/09/16(月) 15:36:25.96ID:oN5KVYJd >969
えー!!
えー!!
971デフォルトの名無しさん
2019/09/16(月) 15:52:31.08ID:YU5GpdCi972デフォルトの名無しさん
2019/09/16(月) 16:04:28.98ID:2suJbq8i matchじゃなくてsplitで
str.split(/(?<=^\d+) /)
か
array = str.split(" ");
array[0] + array.slice(1).join(" ")
とかじゃない?
str.split(/(?<=^\d+) /)
か
array = str.split(" ");
array[0] + array.slice(1).join(" ")
とかじゃない?
973デフォルトの名無しさん
2019/09/16(月) 16:06:13.84ID:2suJbq8i 間違えた
下の最後こうか
[array[0], array.slice(1).join(" ")]
下の最後こうか
[array[0], array.slice(1).join(" ")]
974デフォルトの名無しさん
2019/09/16(月) 16:24:50.88ID:VWND3fAL 素直に
"30 8 years old".match(/^(\d+) (.*)$/).slice(1)
じゃいかんの?
"30 8 years old".match(/^(\d+) (.*)$/).slice(1)
じゃいかんの?
975デフォルトの名無しさん
2019/09/16(月) 16:28:11.45ID:53ZoYsUm 正規表現逆引きcgiとかないの?
雑に日本語で書き込んだらAIが判断して正規表現を返してくれる
そんなの
雑に日本語で書き込んだらAIが判断して正規表現を返してくれる
そんなの
976デフォルトの名無しさん
2019/09/16(月) 17:07:19.10ID:YU5GpdCi977デフォルトの名無しさん
2019/09/16(月) 17:20:26.44ID:oN5KVYJd var ary = new Array( 2 )
var str = "30 8 year old humans"
var pos = str.indexOf( " " );
console.log( pos ) // 2
if( pos === -1 ) { // 見つからない
// 何かの処理
} else {
ary[ 0 ] = str.substring( 0, pos )
ary[ 1 ] = str.substring( pos + 1 )
}
console.log( ary ) // [ '30', '8 year old humans' ]
var str = "30 8 year old humans"
var pos = str.indexOf( " " );
console.log( pos ) // 2
if( pos === -1 ) { // 見つからない
// 何かの処理
} else {
ary[ 0 ] = str.substring( 0, pos )
ary[ 1 ] = str.substring( pos + 1 )
}
console.log( ary ) // [ '30', '8 year old humans' ]
978デフォルトの名無しさん
2019/09/16(月) 17:34:55.93ID:hRvCpxCQ979デフォルトの名無しさん
2019/09/16(月) 17:40:28.59ID:enU8we0d >>969
知らなかった
知らなかった
980デフォルトの名無しさん
2019/09/16(月) 18:09:34.33ID:enU8we0d const str = '30 8 year old humans'
(([first, ...rest]) => [first, rest.join(' ')])(str.split(' '))
//=> ["30", "8 year old humans"]
あ、正規表現がねぇw
(([first, ...rest]) => [first, rest.join(' ')])(str.split(' '))
//=> ["30", "8 year old humans"]
あ、正規表現がねぇw
981デフォルトの名無しさん
2019/09/16(月) 20:46:14.05ID:RGmahsTZ .split(/ (.*)/,2)
982デフォルトの名無しさん
2019/09/16(月) 22:28:40.71ID:enU8we0d 次スレ立てたんだけど、
Regular Expression(正規表現) Part15
https://mevius.5ch.net/test/read.cgi/tech/1568640311/
テンプレ貼ってたら>>3 がNGワードとやらで貼れません。
というわけであとよろしく。
Regular Expression(正規表現) Part15
https://mevius.5ch.net/test/read.cgi/tech/1568640311/
テンプレ貼ってたら>>3 がNGワードとやらで貼れません。
というわけであとよろしく。
983デフォルトの名無しさん
2019/09/17(火) 10:37:10.53ID:aFTX7+W5984977
2019/09/17(火) 12:02:24.99ID:aFTX7+W5 >>977
を修正した
const str = `101 dogs
30 8 year old humans`
const lines = str.split( "\n" ); // 配列
const results = lines.map( line => {
var ary = new Array( 2 )
const pos = line.indexOf( " " );
if( pos === -1 ) { // 見つからない
// 何かの処理
} else {
ary[ 0 ] = line.substring( 0, pos )
ary[ 1 ] = line.substring( pos + 1 )
}
return ary
} );
console.log( results ); // [ [ '101', 'dogs' ], [ '30', '8 year old humans' ] ]
を修正した
const str = `101 dogs
30 8 year old humans`
const lines = str.split( "\n" ); // 配列
const results = lines.map( line => {
var ary = new Array( 2 )
const pos = line.indexOf( " " );
if( pos === -1 ) { // 見つからない
// 何かの処理
} else {
ary[ 0 ] = line.substring( 0, pos )
ary[ 1 ] = line.substring( pos + 1 )
}
return ary
} );
console.log( results ); // [ [ '101', 'dogs' ], [ '30', '8 year old humans' ] ]
985デフォルトの名無しさん
2019/09/17(火) 16:12:25.16ID:sjKTVv5w amazonもダメみたいだね、本の紹介しようとしたら弾かれた
986983
2019/09/17(火) 17:07:52.35ID:aFTX7+W5 Amazon も、半角で書けないだろ
一番恐ろしいのは、はてなブログ!
書き込み禁止画面が出ずに、いきなり吸い込まれて、アクセス禁止にされる!
同様に、twitter の長いURL も、吸い込まれるものがあるらしい!
5ch で、しつこく宣伝する香具師をはめるために、いきなりのアク禁!
MANGO 板に書き込んで、何がNG ワードが、地道に判定していくしかない
一番恐ろしいのは、はてなブログ!
書き込み禁止画面が出ずに、いきなり吸い込まれて、アクセス禁止にされる!
同様に、twitter の長いURL も、吸い込まれるものがあるらしい!
5ch で、しつこく宣伝する香具師をはめるために、いきなりのアク禁!
MANGO 板に書き込んで、何がNG ワードが、地道に判定していくしかない
987デフォルトの名無しさん
2019/09/17(火) 17:46:48.25ID:+bGUkqkJ988デフォルトの名無しさん
2019/09/17(火) 17:53:38.97ID:Xou3E6HC はてブのURL、5ちゃんに書けないのか。気づいてなかったわ。
989デフォルトの名無しさん
2019/09/17(火) 17:56:58.73ID:+bGUkqkJ990デフォルトの名無しさん
2019/10/02(水) 17:34:34.60ID:dOlpIXop U . M . E
991デフォルトの名無しさん
2019/10/12(土) 20:41:17.72ID:VAjNOt6S 以下を正規表現で行うにはどうしたらよいでしょうか。
-----元データ------------------
<aaa bbb
ccc
ddd>
<eee>
ffff ggg
<hhh
iiii>
-----------------------------
-----欲しいデータ----------------
aaa bbb ccc ddd
eee
ffff ggg
hhh iiii
------------------------------
-----元データ------------------
<aaa bbb
ccc
ddd>
<eee>
ffff ggg
<hhh
iiii>
-----------------------------
-----欲しいデータ----------------
aaa bbb ccc ddd
eee
ffff ggg
hhh iiii
------------------------------
992デフォルトの名無しさん
2019/10/12(土) 20:46:20.53ID:osgjxuFW 改行無視のオプション+<>の間を取得して改行を空白に変更でどう?
993デフォルトの名無しさん
2019/10/12(土) 22:51:54.37ID:7TGqmTiW >>991
Ruby
$ cat input.txt | ruby -e 'puts ARGF.read.gsub(/<(.*?)>/m) { |m| $1.gsub("\n", "") }'
Node
$ cat input.txt | node -e 'process.stdout.write(fs.readFileSync(0).toString().replace(/<([\s\S]*?)>/mg, ($0,$1)=>$1.replace(/\n/g, "")))'
sed
$ echo $(cat input.txt) | sed -E 's/<([^>]*)>/\n\1\n/g' | sed -e '/^ *$/d' | sed -e 's/^ *//'
sedのは一旦改行削除して、<..>の前後に改行追加して、空行削除して、行頭の空白を削除してる
Ruby
$ cat input.txt | ruby -e 'puts ARGF.read.gsub(/<(.*?)>/m) { |m| $1.gsub("\n", "") }'
Node
$ cat input.txt | node -e 'process.stdout.write(fs.readFileSync(0).toString().replace(/<([\s\S]*?)>/mg, ($0,$1)=>$1.replace(/\n/g, "")))'
sed
$ echo $(cat input.txt) | sed -E 's/<([^>]*)>/\n\1\n/g' | sed -e '/^ *$/d' | sed -e 's/^ *//'
sedのは一旦改行削除して、<..>の前後に改行追加して、空行削除して、行頭の空白を削除してる
994デフォルトの名無しさん
2019/10/13(日) 01:09:33.88ID:Gu1oNPJo Ruby で、
text = <<"EOT"
<aaa bbb
ccc
ddd>
<eee>
ffff ggg
<hhh
iiii>
EOT
# m option は、multi-line。$1 は、キャプチャー部分。
# [^>]+ は、> 以外の文字が、1文字以上続く
puts text.gsub( /<([^>]+)>/m ) { |matched| $1.gsub( "\n", " " ) }
>>993
>$1.gsub("\n", "")
"" は、" "(半角空白)の間違いだろ
text = <<"EOT"
<aaa bbb
ccc
ddd>
<eee>
ffff ggg
<hhh
iiii>
EOT
# m option は、multi-line。$1 は、キャプチャー部分。
# [^>]+ は、> 以外の文字が、1文字以上続く
puts text.gsub( /<([^>]+)>/m ) { |matched| $1.gsub( "\n", " " ) }
>>993
>$1.gsub("\n", "")
"" は、" "(半角空白)の間違いだろ
995デフォルトの名無しさん
2019/10/13(日) 01:37:59.89ID:5y3mzviq996994
2019/10/13(日) 03:33:31.81ID:Gu1oNPJo 5ch からコピーすると、行末に半角空白が入るから、
漏れは、Ruby で削除してる
# クリップボード内の複数行文字列の、各行の先頭・末尾から、
# 連続する空白類を除去して、クリップボードに入れる
str = `powershell Get-Clipboard`
str.encode! Encoding::UTF_8, Encoding::CP932 # UTF_8 へ変換
ary = str.each_line.map( &:strip ) # 連続する空白類を除去する
IO.popen( 'clip', 'w:cp932' ) do | clip | # CP932 へ戻す
clip.print( ary.join "\n" )
end
漏れは、Ruby で削除してる
# クリップボード内の複数行文字列の、各行の先頭・末尾から、
# 連続する空白類を除去して、クリップボードに入れる
str = `powershell Get-Clipboard`
str.encode! Encoding::UTF_8, Encoding::CP932 # UTF_8 へ変換
ary = str.each_line.map( &:strip ) # 連続する空白類を除去する
IO.popen( 'clip', 'w:cp932' ) do | clip | # CP932 へ戻す
clip.print( ary.join "\n" )
end
997デフォルトの名無しさん
2019/10/13(日) 07:48:23.30ID:0NSyRtEU998デフォルトの名無しさん
2019/10/13(日) 22:01:19.92ID:5y3mzviq999デフォルトの名無しさん
2019/10/13(日) 22:05:59.26ID:w1EMiXuT VScodeの正規表現検索、置換はjavascriptだろうか?
1000デフォルトの名無しさん
2019/10/13(日) 22:42:48.39ID:5y3mzviq >>999
ripgrep
ripgrep
10011001
Over 1000Thread このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 942日 20時間 38分 13秒
新しいスレッドを立ててください。
life time: 942日 20時間 38分 13秒
レス数が1000を超えています。これ以上書き込みはできません。
ニュース
- 中国側が首相答弁の撤回要求、日本側拒否★3 [夜のけいちゃん★]
- 中国側が首相答弁の撤回要求、日本側拒否★4 [夜のけいちゃん★]
- 被爆者は「怒りが腹の底から湧いてくる」高市首相“非核三原則見直し報道”に被爆地で懸念や憤りの声《長崎》 [1ゲットロボ★]
- 債券・円・株「トリプル安」に…長期金利1.755%まで上昇、円は対ユーロで史上最安値 ★2 [蚤の市★]
- 【中国外務省】日中関係悪化は高市氏に責任と名指しで非難… ★7 [BFU★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★6 [ぐれ★]
- ネトウヨ「中国人の来日自粛で数千兆円単位の損失?中国に賠償を要求すべき!」 戦後賠償をチャラにしてもらった恩を忘れてて草 [314039747]
- 社民党、新垣氏の離党承認 所属衆院議員ゼロに [377482965]
- 日本人が学習しない理由ってなんなのさ… [819729701]
- 石破「米中韓と特にトラブルなく外交しました、少数与党でほぼ全ての法案成立させました、」👈あれこれ高市よりマシじゃね? [888298477]
- 【悲報】高市さん、消える [535650357]
- 【立憲岡田】高市早苗、2021年岸田政権に「台湾有事は日本の有事か」と迫っていたwww★2 [237216734]
