Regular Expressionスレです。
質問する場合は必ず実装言語や処理系ソフトウェア名を示してください。
前スレ
Regular Expression(正規表現) Part14
https://mevius.5ch.net/test/read.cgi/tech/1489511075/
次スレは>>980宜しく
天ぷら等>>2以降
探検
Regular Expression(正規表現) Part15
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2019/09/16(月) 22:25:11.87ID:enU8we0d381デフォルトの名無しさん
2020/08/10(月) 01:16:40.29ID:rwR0rEzu >>379
$が行末にマッチしてないだけなら、単に改行\Rに置き換えてみてもいいし正規表現の頭におまじない(?m)を足してみてもいい
置換じゃなくて検索なら
(?<=名前:<[^>]{0,99}?>).*?(?=</a>)|(?<=名前:)(?!<).*+
$が行末にマッチしてないだけなら、単に改行\Rに置き換えてみてもいいし正規表現の頭におまじない(?m)を足してみてもいい
置換じゃなくて検索なら
(?<=名前:<[^>]{0,99}?>).*?(?=</a>)|(?<=名前:)(?!<).*+
382デフォルトの名無しさん
2020/08/10(月) 01:36:35.46ID:foQnjRqn383デフォルトの名無しさん
2020/08/11(火) 13:59:29.59ID:JW3Ec0IY grepのperl正規表現オプションを使ってURLのホスト名を抽出したいです
https://mevius.5ch.net/test/read.cgi/tech/1568640311/l50
http://www.google.co.jp/
このスレだったら”mevius”
googleなら”www”
「https://」or「http://」と「.」に挟まれた文字列の最短一致でできそうなのですがなぜか上手くいきません
1文字に挟まれたパターンは検索して出てくるのですが、複数文字に挟まれたパターンはあまり出てこなくて、この際はっきりしたいので「〇〇〇と△△△に挟まれた文字列の中身のみを最短一致で抽出」パターンも教えてください
https://mevius.5ch.net/test/read.cgi/tech/1568640311/l50
http://www.google.co.jp/
このスレだったら”mevius”
googleなら”www”
「https://」or「http://」と「.」に挟まれた文字列の最短一致でできそうなのですがなぜか上手くいきません
1文字に挟まれたパターンは検索して出てくるのですが、複数文字に挟まれたパターンはあまり出てこなくて、この際はっきりしたいので「〇〇〇と△△△に挟まれた文字列の中身のみを最短一致で抽出」パターンも教えてください
384デフォルトの名無しさん
2020/08/11(火) 14:15:33.95ID:47EO3/0I385デフォルトの名無しさん
2020/08/11(火) 14:17:58.02ID:oEzBqY+p grep知らずにここに居る人が存在するのか…
386デフォルトの名無しさん
2020/08/11(火) 14:33:07.25ID:JW3Ec0IY >>384
早速ありがとうございます
ですがそのやり方ですとgrepでは抽出できませんでした
△△△は複数の種類の文字ですね言葉足らずでした
正しくは「ABC」と「DEF」に挟まれた文字みたいなものですね
早速ありがとうございます
ですがそのやり方ですとgrepでは抽出できませんでした
△△△は複数の種類の文字ですね言葉足らずでした
正しくは「ABC」と「DEF」に挟まれた文字みたいなものですね
387デフォルトの名無しさん
2020/08/11(火) 14:36:19.90ID:giB5l2E5 $ cat input.txt
https://mevius.5ch.net/test/read.cgi/tech/1568640311/l50
http://www.google.co.jp/
$ grep -Po '(?<=:\/\/).+?(?=\.)' input.txt
mevius
www
https://mevius.5ch.net/test/read.cgi/tech/1568640311/l50
http://www.google.co.jp/
$ grep -Po '(?<=:\/\/).+?(?=\.)' input.txt
mevius
www
388デフォルトの名無しさん
2020/08/11(火) 14:37:41.53ID:47EO3/0I389デフォルトの名無しさん
2020/08/11(火) 14:45:43.81ID:giB5l2E5 pcregrepならキャプチャグループを番号指定して出力可能
$ pcregrep -o1 ':\/\/(.+?)\.' input.txt
$ pcregrep -o1 ':\/\/(.+?)\.' input.txt
390デフォルトの名無しさん
2020/08/11(火) 15:47:36.92ID:JW3Ec0IY391デフォルトの名無しさん
2020/08/11(火) 20:17:56.42ID:Uga1WByL Javaで
setMethod();
getMethod();
setBake();
みたいなgetter,setterは検出したくなく、
Methoda();
Methodb();
bake();
みたいなset, getで始まっていない()付きの文字列を含む
行を正規表現一行で検出するするのはどうしたらいいのですか?
setMethod();
getMethod();
setBake();
みたいなgetter,setterは検出したくなく、
Methoda();
Methodb();
bake();
みたいなset, getで始まっていない()付きの文字列を含む
行を正規表現一行で検出するするのはどうしたらいいのですか?
392デフォルトの名無しさん
2020/08/11(火) 21:07:16.11ID:xo6O5h7F ^(?=.*?\b(?!set|get)[A-Za-z]++\(\);).*
^(?=.*\b(?!set|get)[A-Za-z]+\(\);).*
^(?=.*\b(?!set|get)[A-Za-z]+\(\);).*
393デフォルトの名無しさん
2020/08/11(火) 21:55:37.51ID:Uga1WByL 申し訳ありません。
Methoda() {
Methodb(){
c = z.Methoda().Methodb(a,b)
みたいな行は検索の対象にいれたいのですが
よろしくお願いします。
Methoda() {
Methodb(){
c = z.Methoda().Methodb(a,b)
みたいな行は検索の対象にいれたいのですが
よろしくお願いします。
394デフォルトの名無しさん
2020/08/11(火) 22:14:19.40ID:giB5l2E5 もうちょい目的と仕様をはっきりさせたほうがいいんじゃない?
get/setではじまってない()付きの文字列を含む行なら問題ないけど
get/setではじまってないメソッド定義やメソッド呼び出しをもれなく抽出したいということなら
正規表現だときつい気がする
後者ならコードをパースして使ってるメソッド一覧を出力するようなツールを探したほうがいいかも
get/setではじまってない()付きの文字列を含む行なら問題ないけど
get/setではじまってないメソッド定義やメソッド呼び出しをもれなく抽出したいということなら
正規表現だときつい気がする
後者ならコードをパースして使ってるメソッド一覧を出力するようなツールを探したほうがいいかも
395デフォルトの名無しさん
2020/08/11(火) 22:27:44.94ID:xo6O5h7F ^(?=.*?\b(?!set|get)[A-Za-z]++\(\)).*
396デフォルトの名無しさん
2020/08/11(火) 22:36:31.67ID:P147PBTZ (?<=(?:\n|^|\.))(?<!set|get)[a-zA-Z]+\(
397デフォルトの名無しさん
2020/08/11(火) 22:52:10.25ID:Uga1WByL 引数が無い and setter, getterではないメソッドを含んでいる行です
ひょっとして正規表現内では表現できないかもしれません。
文脈自由レベルでしょうか?
ひょっとして正規表現内では表現できないかもしれません。
文脈自由レベルでしょうか?
398デフォルトの名無しさん
2020/09/20(日) 19:06:52.11ID:shjW7F5c 5chのスレタイはこん感じで入っている
<a href="1599110613/l50">1: ぶっちゃけ始めるのにいい言語て何 part3 (78)</a>
<a href="1545032904/l50">2: 文字コード総合スレ Part12 (95)</a>
<a href="1598112455/l50">3: Rust part9 (198)</a>
<a href="1598336253/l50">4: 小6におすすめな言語 (32)</a>
<a href="1594528940/l50">5: C++相談室 part152 (404)</a>
<a href="1596690797/l50">6: Xamarin Part7 (97)</a>
<a href="1598527450/l50">7: くだすれPython(超初心者用) その50【まず1嫁】 (423)</a>
ここからたとえば「言語」とついたスレタイだけ抽出するのは無理だった
<a href="1599110613/l50">1: ぶっちゃけ始めるのにいい言語て何 part3 (78)</a>
<a href="1598336253/l50">4: 小6におすすめな言語 (32)</a>
<a href="1599110613/l50">1: ぶっちゃけ始めるのにいい言語て何 part3 (78)</a>
<a href="1545032904/l50">2: 文字コード総合スレ Part12 (95)</a>
<a href="1598112455/l50">3: Rust part9 (198)</a>
<a href="1598336253/l50">4: 小6におすすめな言語 (32)</a>
<a href="1594528940/l50">5: C++相談室 part152 (404)</a>
<a href="1596690797/l50">6: Xamarin Part7 (97)</a>
<a href="1598527450/l50">7: くだすれPython(超初心者用) その50【まず1嫁】 (423)</a>
ここからたとえば「言語」とついたスレタイだけ抽出するのは無理だった
<a href="1599110613/l50">1: ぶっちゃけ始めるのにいい言語て何 part3 (78)</a>
<a href="1598336253/l50">4: 小6におすすめな言語 (32)</a>
399デフォルトの名無しさん
2020/09/20(日) 20:06:08.38ID:XyOg3AIQ400デフォルトの名無しさん
2020/09/20(日) 23:02:18.72ID:ylbIOeZ5 JavaScript では、これで複数行マッチ(g)できた
/<a[^>]+>.*言語.*<\/a>/g
<a で始まって、> 以外の文字が、1文字以上続いて、>
言語の前後に、.*
<\/a> で終わる
他には、Ruby でスクレイピングすれば?
/<a[^>]+>.*言語.*<\/a>/g
<a で始まって、> 以外の文字が、1文字以上続いて、>
言語の前後に、.*
<\/a> で終わる
他には、Ruby でスクレイピングすれば?
401デフォルトの名無しさん
2020/09/21(月) 00:25:21.75ID:18fwmJUF >>400
おかしいな、それでうまくいかなかったのに
と思ったら入ってくるHTMLソースに改行がないようだ
</a>のあとに改行入れるとうまくいくように見えるけど、HTMLソースがおかしくなる
正規表現以前の問題だったわ
おかしいな、それでうまくいかなかったのに
と思ったら入ってくるHTMLソースに改行がないようだ
</a>のあとに改行入れるとうまくいくように見えるけど、HTMLソースがおかしくなる
正規表現以前の問題だったわ
402400
2020/09/21(月) 02:18:58.27ID:+seX53Ud 別に抜き出すだけなら、
一旦、</a> の後ろに、改行を追加してから、正規表現を使えば?
それか、HTML をコピーしてから、やるとか
一旦、</a> の後ろに、改行を追加してから、正規表現を使えば?
それか、HTML をコピーしてから、やるとか
403デフォルトの名無しさん
2020/09/21(月) 04:00:13.04ID:fovUI165 "/(<a(?>[^>]+)>(?>[^<]*?言語[^<]*)<\/a>)(?:<a(?![^<]*言語)(?>[^<]+)<\/a>)*/$1/g"
404デフォルトの名無しさん
2020/09/21(月) 04:10:48.96ID:fovUI165 "/<a(?![^<]*言語)(?>[^<]+)<\/a>//g"
405400
2020/09/21(月) 05:27:30.09ID:+seX53Ud Ruby, Nokogiri で、スクレイピングしたら、
require 'open-uri'
require 'nokogiri'
# プログラム技術@スレッド一覧
url = "https://mevius.5ch.net/tech/subback.html"
doc = Nokogiri::HTML( open( url ) )
# 「言語」という単語が含まれる、タイトルを表示する
ary = doc.css( "#trad > a" ).map { |elem| elem.content }
.select { |title| title.include? "言語" }
puts ary
出力
6: 次世代言語21 Go Nim Rust Swift Kotlin TypeScript (330)
10: 日本語プログラミング言語『なでしこ』スレ6.1c2ch.net (108)
以下略
require 'open-uri'
require 'nokogiri'
# プログラム技術@スレッド一覧
url = "https://mevius.5ch.net/tech/subback.html"
doc = Nokogiri::HTML( open( url ) )
# 「言語」という単語が含まれる、タイトルを表示する
ary = doc.css( "#trad > a" ).map { |elem| elem.content }
.select { |title| title.include? "言語" }
puts ary
出力
6: 次世代言語21 Go Nim Rust Swift Kotlin TypeScript (330)
10: 日本語プログラミング言語『なでしこ』スレ6.1c2ch.net (108)
以下略
406デフォルトの名無しさん
2020/09/21(月) 15:36:21.19ID:K0hBqhJG 冗談抜きでそんな無駄な努力するよりxpathとかそっち系おすすめするぞ
407デフォルトの名無しさん
2020/09/21(月) 16:25:39.02ID:+MA8+KhA 単純なスクレイピングはcurl+pupが楽
$ curl -s https://mevius.5ch.net/tech/subback.html | pup '#trad > a' text{} | grep 言語 | head -5
$ curl -s https://mevius.5ch.net/tech/subback.html | pup '#trad > a' text{} | grep 言語 | head -5
408400
2020/09/21(月) 22:36:13.18ID:+seX53Ud >>405
のopen-uri を、下のように、外部コマンドのcurl にも出来るけど、
普通は、わざわざ外部コマンドを呼ばない
url = "http〜"
doc = Nokogiri::HTML( open( url ) )
html = `curl http〜`
doc = Nokogiri::HTML( html )
のopen-uri を、下のように、外部コマンドのcurl にも出来るけど、
普通は、わざわざ外部コマンドを呼ばない
url = "http〜"
doc = Nokogiri::HTML( open( url ) )
html = `curl http〜`
doc = Nokogiri::HTML( html )
409デフォルトの名無しさん
2020/09/22(火) 15:43:36.39ID:fUgbeHE5 ●Regular Expressionの使用環境
サクラエディタ
●検索か置換か?
置換
●説明
httpを含まない行の/を年に置き換えたい
●対象データ
https://5ch.net/
2020/9
●希望する結果
https://5ch.net/
2020年9
サクラエディタ
●検索か置換か?
置換
●説明
httpを含まない行の/を年に置き換えたい
●対象データ
https://5ch.net/
2020/9
●希望する結果
https://5ch.net/
2020年9
410デフォルトの名無しさん
2020/09/22(火) 16:23:41.31ID:hefdb5Yb こんなもんでもよろしいでしょうか。
あんまりうまくないと思いますが。
よろしくお願いいたします。
置換前
^(?!http)([0-9]{4})(/)
置換後
$1年
あんまりうまくないと思いますが。
よろしくお願いいたします。
置換前
^(?!http)([0-9]{4})(/)
置換後
$1年
411デフォルトの名無しさん
2020/09/22(火) 16:33:21.65ID:fUgbeHE5 >>410
ありがとうございます。うまくいきました。
ありがとうございます。うまくいきました。
412デフォルトの名無しさん
2020/09/23(水) 20:03:55.75ID:itvZvUM6413デフォルトの名無しさん
2020/09/25(金) 14:10:58.84ID:3NF+8528 ●Regular Expressionの使用環境
Linux
awkとか、sed。
目的が置換なので、コマンドはなんでも構いません。
●検索か置換か?
置換
●説明
= 任意の文字列 :
を置き換えたい
※前後に半角スペースあり。
●対象データ
hogeghoe = type: furagura
mogemoge = syntax: mojamoja
●希望する結果
hogeghoe type: furagura
mogemoge syntax: mojamoja
※スペースで置き換えた例
よろしくお願いいたします。
Linux
awkとか、sed。
目的が置換なので、コマンドはなんでも構いません。
●検索か置換か?
置換
●説明
= 任意の文字列 :
を置き換えたい
※前後に半角スペースあり。
●対象データ
hogeghoe = type: furagura
mogemoge = syntax: mojamoja
●希望する結果
hogeghoe type: furagura
mogemoge syntax: mojamoja
※スペースで置き換えた例
よろしくお願いいたします。
414デフォルトの名無しさん
2020/09/25(金) 14:14:55.55ID:3NF+8528 >>413
取り消します。精査する前に書き込んでおり
間違いがございました。すいません。
●Regular Expressionの使用環境
Linux
awkとか、sed。
目的が置換なので、コマンドはなんでも構いません。
●検索か置換か?
置換
●説明
= 任意の文字列 :
を置き換えたい
※前後に半角スペースあり。
●対象データ
hogeghoe = type: fuga:fuga
mogemoge = syntax: moja:moja
※置換目的のコロンの後ろにさらにコロンがある場合があります。
=から「次の最初のコロン」までが置換対象です。
●希望する結果
hogeghoe fuga:fuga
mogemoge moja:moja
※スペースで置き換えた例
よろしくお願いいたします。
取り消します。精査する前に書き込んでおり
間違いがございました。すいません。
●Regular Expressionの使用環境
Linux
awkとか、sed。
目的が置換なので、コマンドはなんでも構いません。
●検索か置換か?
置換
●説明
= 任意の文字列 :
を置き換えたい
※前後に半角スペースあり。
●対象データ
hogeghoe = type: fuga:fuga
mogemoge = syntax: moja:moja
※置換目的のコロンの後ろにさらにコロンがある場合があります。
=から「次の最初のコロン」までが置換対象です。
●希望する結果
hogeghoe fuga:fuga
mogemoge moja:moja
※スペースで置き換えた例
よろしくお願いいたします。
415デフォルトの名無しさん
2020/09/25(金) 14:24:47.87ID:q10QaMUD >>414
sed 's/ =[^:]*://g'
sed 's/ =[^:]*://g'
416デフォルトの名無しさん
2020/09/25(金) 16:57:28.24ID:3NF+8528417デフォルトの名無しさん
2020/09/25(金) 21:14:34.14ID:9rvIESf7418デフォルトの名無しさん
2020/09/25(金) 22:49:57.38ID:rXEBHfdh ●使用環境:RegEx Lab(iOSアプリ,ICU Regex)
●検索か置換か?:検索
●説明:時間毎の内容を取り出したいです。自分でも考えてみたのですが、(?m)(?<=\d{1,2}:\d{2}\r)([\s\S]*?)\r ではAt〜Mediaまで取得できませんでした。
補足として、各内容の前後には必ず時間と空白行が挿入されています。ただし、テキストにも空白行が挿入されている場合があります。ちなみに日付毎にファイルが分かれているため、対象データ最上部の日付が途中に挿入されることはありません。
●対象データ
25 September 2020
=================
8:05
テキスト1
10:44
テキスト2
At: スポット名: 位置情報・座標
Tags: タグ1, タグ2
Media: 123abcdefg.jpg
Media: hijklmn456.png
●希望する結果
○マッチ1
テキスト1
○マッチ2
テキスト2
At: スポット名: 位置情報・座標
Tags: タグ1, タグ2
Media: 123abcdefg.jpg
Media: hijklmn456.png
●検索か置換か?:検索
●説明:時間毎の内容を取り出したいです。自分でも考えてみたのですが、(?m)(?<=\d{1,2}:\d{2}\r)([\s\S]*?)\r ではAt〜Mediaまで取得できませんでした。
補足として、各内容の前後には必ず時間と空白行が挿入されています。ただし、テキストにも空白行が挿入されている場合があります。ちなみに日付毎にファイルが分かれているため、対象データ最上部の日付が途中に挿入されることはありません。
●対象データ
25 September 2020
=================
8:05
テキスト1
10:44
テキスト2
At: スポット名: 位置情報・座標
Tags: タグ1, タグ2
Media: 123abcdefg.jpg
Media: hijklmn456.png
●希望する結果
○マッチ1
テキスト1
○マッチ2
テキスト2
At: スポット名: 位置情報・座標
Tags: タグ1, タグ2
Media: 123abcdefg.jpg
Media: hijklmn456.png
419デフォルトの名無しさん
2020/09/26(土) 02:18:28.42ID:Xs9MiFl7 とりあえず鬼雲なら
\d\d?:\d\d\n(([^\n]+\n)+)
で\1なり$1なりで取り出せるけど
どー使うのかしらねーけど改行に続く時刻消せばいいんじゃねw
\d\d?:\d\d\n(([^\n]+\n)+)
で\1なり$1なりで取り出せるけど
どー使うのかしらねーけど改行に続く時刻消せばいいんじゃねw
420デフォルトの名無しさん
2020/09/26(土) 07:24:38.50ID:QW/S7GaB \d\d?:\d\d\n\K((.(?!^\d\d?:\d\d))+\n)+
マッチに時間の直前の空行まで含めるのか?含まないのか?
テキスト終端(例だとテキスト1\n 456.png\n)の改行文字を含めるのか?含まないのか?
マッチがどこまでなのか曖昧
2段階になるけど一旦時刻をテキスト中に現れない文字に置換すれば簡単に出来る
^\d\d?:\d\d → ★
[^★]+
時刻の直前の空行を含まないのなら
\n\d\d?:\d\d → ★
テキスト終端の改行を(ry
\n\n\d\d?:\d\d → ★
マッチに時間の直前の空行まで含めるのか?含まないのか?
テキスト終端(例だとテキスト1\n 456.png\n)の改行文字を含めるのか?含まないのか?
マッチがどこまでなのか曖昧
2段階になるけど一旦時刻をテキスト中に現れない文字に置換すれば簡単に出来る
^\d\d?:\d\d → ★
[^★]+
時刻の直前の空行を含まないのなら
\n\d\d?:\d\d → ★
テキスト終端の改行を(ry
\n\n\d\d?:\d\d → ★
421デフォルトの名無しさん
2020/09/26(土) 19:21:20.61ID:aEJhlUXF422デフォルトの名無しさん
2020/09/26(土) 19:40:36.95ID:5brst4gY (?m)(?<=^\d{1,2}:\d{2}(?:\r\n|(?<!\r)\n|\r(?!\n)))^[\s\S]*?(?=(?:\r\n|(?<!\r)\n|\r(?!\n))+\d{1,2}:\d{2}(?:\r\n|(?<!\r)\n|\r(?!\n))|(?:\r\n|(?<!\r)\n|\r(?!\n))*\z)
423デフォルトの名無しさん
2020/09/26(土) 20:25:49.24ID:W0BkzYxL こういう長い正規表現てやっぱ遅くなったりするの?
424デフォルトの名無しさん
2020/09/26(土) 20:47:28.01ID:5brst4gY これでよかったっぽい
(?m)(?<=^\d{1,2}:\d{2}(?:\r?\n|\r))^[\s\S]*?(?=(?:\r?\n|\r)+\d{1,2}:\d{2}(?:\r?\n|\r)|(?:\r?\n|\r)*\z)
(?m)(?<=^\d{1,2}:\d{2}(?:\r?\n|\r))^[\s\S]*?(?=(?:\r?\n|\r)+\d{1,2}:\d{2}(?:\r?\n|\r)|(?:\r?\n|\r)*\z)
425デフォルトの名無しさん
2020/09/26(土) 20:48:16.86ID:5brst4gY426デフォルトの名無しさん
2020/09/26(土) 20:52:05.12ID:yw3DqGjj 長い短いではなく、試行回数が多い記述(行ったり戻ったり何度もやり直すもの)が遅い
そういうのは逆に記述を詳しくしたりして長くするほうが速い
そういうのは逆に記述を詳しくしたりして長くするほうが速い
427デフォルトの名無しさん
2020/09/26(土) 21:02:00.75ID:aEJhlUXF428デフォルトの名無しさん
2020/09/26(土) 21:08:10.61ID:GBugeZhr >>416
正規表現のデフォルトは、貪欲・greedy・最長一致だから、
非貪欲・reluctant・最短一致にしたい場合に使う。? と同じ
[^x]*、x以外の文字を、0個以上
[^x]+、x以外の文字を、1個以上
Ruby では、
src = "12x34x56"
p src[ /.*x/ ] #=> 12x34x
p src[ /.*?x/ ] #=> 12x
p src[ /[^x]*x/ ] #=> 12x
正規表現のデフォルトは、貪欲・greedy・最長一致だから、
非貪欲・reluctant・最短一致にしたい場合に使う。? と同じ
[^x]*、x以外の文字を、0個以上
[^x]+、x以外の文字を、1個以上
Ruby では、
src = "12x34x56"
p src[ /.*x/ ] #=> 12x34x
p src[ /.*?x/ ] #=> 12x
p src[ /[^x]*x/ ] #=> 12x
429デフォルトの名無しさん
2020/09/26(土) 21:51:29.79ID:awo63W4n >>426
行ったり戻ったりはないんじゃない?
行ったり戻ったりはないんじゃない?
430デフォルトの名無しさん
2020/09/26(土) 22:57:54.77ID:U+G6yEte431デフォルトの名無しさん
2020/09/27(日) 04:53:12.79ID:ICi3HfJX \d{1,2}なら\d\d?
\d{2}なら\d\d
の方が短く済むから2桁以下なら無駄
\d{2}なら\d\d
の方が短く済むから2桁以下なら無駄
432デフォルトの名無しさん
2020/09/27(日) 05:56:53.69ID:nMBRMM6J それは見易さと短さのどちらを優先するかによる
短いだけが正義では無い
2つ程度で見易いもクソも…と思うかも知れないが慣れない者にとっては数字の方が見易いらしい
俺は断然\d\d?派だが
でもこれは(?:\r?\n|\r)→(?:\r\n?|\n)
同じ意味だが
\r
\r\n
\n
をどう表すか?ってことだから後者のように前方を固定した方が分かり易いと思う
RtoLが関係してたりするのだろうか?
短いだけが正義では無い
2つ程度で見易いもクソも…と思うかも知れないが慣れない者にとっては数字の方が見易いらしい
俺は断然\d\d?派だが
でもこれは(?:\r?\n|\r)→(?:\r\n?|\n)
同じ意味だが
\r
\r\n
\n
をどう表すか?ってことだから後者のように前方を固定した方が分かり易いと思う
RtoLが関係してたりするのだろうか?
433デフォルトの名無しさん
2020/09/27(日) 06:00:47.57ID:Y+KxHJb0 今どき\rだけとか見ないし\r?\nで良くね? 駄目?
434デフォルトの名無しさん
2020/09/27(日) 20:03:40.48ID:+P5c8fwT ●Regular Expressionの使用環境
c# .net Framework 4.8
●検索か置換か?
検索
●説明
「,」区切りの2桁の文字列を全て取得したい(Split関数でなく)。
●対象データ
04,05,28
●希望する結果
04
05
28
●補足
現在使っている正規表現は右です (\d{2})(?:,(\d{2}))*
これを使うと、対象となる2桁の数字のうち、最初と最後のものしか取得できません
対象データが4個以上でも同様です
c# .net Framework 4.8
●検索か置換か?
検索
●説明
「,」区切りの2桁の文字列を全て取得したい(Split関数でなく)。
●対象データ
04,05,28
●希望する結果
04
05
28
●補足
現在使っている正規表現は右です (\d{2})(?:,(\d{2}))*
これを使うと、対象となる2桁の数字のうち、最初と最後のものしか取得できません
対象データが4個以上でも同様です
435411
2020/09/27(日) 20:26:03.04ID:qo22866j 以前 >>409 で質問し解答を頂いた者です。
内容は同じなんですが、この置換を他のパターンでも応用したく再度質問致します。
●Regular Expressionの使用環境
サクラエディタ
●検索か置換か?
置換
●説明
◆を含まない行の▲を■に置き換えたい
◆▲■は任意の文字列で、文字数も決まっていません。
●対象データ
Sst68▲h4◆
DRkPP2▲V
NN▲◆9K12XV▲
G▲RL88▲A7
●希望する結果
Sst68▲h4◆
DRkPP2■V
NN▲◆9K12XV▲
G■RL88■A7
どうぞよろしくお願いいたします。
内容は同じなんですが、この置換を他のパターンでも応用したく再度質問致します。
●Regular Expressionの使用環境
サクラエディタ
●検索か置換か?
置換
●説明
◆を含まない行の▲を■に置き換えたい
◆▲■は任意の文字列で、文字数も決まっていません。
●対象データ
Sst68▲h4◆
DRkPP2▲V
NN▲◆9K12XV▲
G▲RL88▲A7
●希望する結果
Sst68▲h4◆
DRkPP2■V
NN▲◆9K12XV▲
G■RL88■A7
どうぞよろしくお願いいたします。
436デフォルトの名無しさん
2020/09/27(日) 21:00:31.89ID:7/tRzxCb >>430
極端な例だろうけど4倍も差が出るのか
極端な例だろうけど4倍も差が出るのか
437デフォルトの名無しさん
2020/09/27(日) 21:15:26.41ID:5NvF/cEJ >>434
(¥d{2}),?
(¥d{2}),?
438デフォルトの名無しさん
2020/09/27(日) 22:52:42.77ID:+P5c8fwT439デフォルトの名無しさん
2020/09/27(日) 23:09:03.39ID:5NvF/cEJ440デフォルトの名無しさん
2020/09/27(日) 23:09:42.50ID:PP0FbEmI441デフォルトの名無しさん
2020/09/27(日) 23:11:27.15ID:PP0FbEmI あ、そのリンク先の表現でのことじゃなく一般的な話としてのことなので、念のため
442デフォルトの名無しさん
2020/09/27(日) 23:23:38.28ID:+P5c8fwT >>439
おかげさまで出来ました。ありがとうございます
おかげさまで出来ました。ありがとうございます
443デフォルトの名無しさん
2020/09/28(月) 00:15:40.71ID:KUcib4mR 数年前に某技術系Q&Aサイト全体が30分以上応答不能になったことがあったけど、アレもbacktrack絡みの正規表現処理(に高負荷をもたらす投稿)がトリガーだったはず
444デフォルトの名無しさん
2020/09/28(月) 00:39:03.54ID:HqyKtYng Jane系のNGEx,ReplaceStr.txtの正規表現で酷いものが投稿されることがある
よく吟味しないと
対象スレ(ちょっと長いスレとか)によってはだんまりとか発生する
よく吟味しないと
対象スレ(ちょっと長いスレとか)によってはだんまりとか発生する
445デフォルトの名無しさん
2020/09/28(月) 05:18:56.57ID:QIpyCS2B446デフォルトの名無しさん
2020/09/28(月) 05:43:11.14ID:9VrOlQkL バックトラックは対象が簡単に一致するものしか無いのであればそれほど気を使わなくても良いが
一致しないものがある場合 一致しない に至るまでに全パターンを試すから
その挙動を必要最小限に抑えたものとそうでないものとでの試行数は桁違い
対象が長くなれば数倍どころでは済まない
大抵の場合、人が確認する際のロジックを再現するのが1番効率が良い
NGEx.txtを晒すスレ7
http://jane2ch.net/test/read.cgi/community/1497272912/340
(<br>.*){20} 49194006ms 激重
^(.*?<br>){20} *1570733ms
^(?:(?:(?!<br>).)*<br>){20} ****2202ms 軽い
^(?>.*?<br>){20} ****1784ms もっと軽い
一致しないものがある場合 一致しない に至るまでに全パターンを試すから
その挙動を必要最小限に抑えたものとそうでないものとでの試行数は桁違い
対象が長くなれば数倍どころでは済まない
大抵の場合、人が確認する際のロジックを再現するのが1番効率が良い
NGEx.txtを晒すスレ7
http://jane2ch.net/test/read.cgi/community/1497272912/340
(<br>.*){20} 49194006ms 激重
^(.*?<br>){20} *1570733ms
^(?:(?:(?!<br>).)*<br>){20} ****2202ms 軽い
^(?>.*?<br>){20} ****1784ms もっと軽い
447435
2020/09/28(月) 15:22:21.72ID:R3xf3P8N448デフォルトの名無しさん
2020/09/28(月) 18:16:12.67ID:RQEq0dPl >>435
(?:^(?!.*◆)|\G(?!\A))(.*?)▲ → $1■
(?:^(?!.*◆)|\G(?!\A))(.*?)▲ → $1■
449デフォルトの名無しさん
2020/09/28(月) 18:54:06.13ID:R3xf3P8N >>448
出来ました!素晴らしいです!マジ感謝です!ありがとうございました。
出来ました!素晴らしいです!マジ感謝です!ありがとうございました。
450デフォルトの名無しさん
2020/10/21(水) 20:12:01.53ID:nvjx5i9I 一文字だけで改行するのを
NGにするには
どうしたらいい?
NGにするには
どうしたらいい?
451デフォルトの名無しさん
2020/10/21(水) 20:18:35.54ID:+qN3TxkM >>450
テンプレを読んで出直しましょう
テンプレを読んで出直しましょう
452デフォルトの名無しさん
2020/11/06(金) 11:29:16.13ID:xeNq05z2 oniguruma6.9.6 Windows10のVS2019で64bit版だとtestc.exeが無言で終了する、32bitだと正常。
Winodws7でVS2015U3だと64bitでも32bitでも正常に動作する。
これ、以前からWindows64bitが鬼門だなあ
Winodws7でVS2015U3だと64bitでも32bitでも正常に動作する。
これ、以前からWindows64bitが鬼門だなあ
453デフォルトの名無しさん
2020/11/10(火) 19:15:09.53ID:aUuUQimA ●PowerShell
●置換
●テキストファイル内の「WrtCookie=」で始まる行の値を「WrtCookie=」に置換する
●「WrtCookie=」で始まる行
現在のコマンド
$input = '^(WrtCookie=).+$'
$replacement = '$1'
$file_contents = $(Get-Content $filepath) -replace $input, $replacement
結果
テキストファイル内の全行が出鱈目な文字列に置換されます
たとえば「$1[$1W$1I$1N$1D$1O$1W$1]$1」など
よろしくお願いします
●置換
●テキストファイル内の「WrtCookie=」で始まる行の値を「WrtCookie=」に置換する
●「WrtCookie=」で始まる行
現在のコマンド
$input = '^(WrtCookie=).+$'
$replacement = '$1'
$file_contents = $(Get-Content $filepath) -replace $input, $replacement
結果
テキストファイル内の全行が出鱈目な文字列に置換されます
たとえば「$1[$1W$1I$1N$1D$1O$1W$1]$1」など
よろしくお願いします
454デフォルトの名無しさん
2020/11/10(火) 21:00:25.97ID:UHXHz0W1455デフォルトの名無しさん
2020/11/11(水) 00:09:52.12ID:tbqNNnPd >>454
書き込む前にたくさんググりましたが、ダメでした
書き込む前にたくさんググりましたが、ダメでした
456 【大凶】
2020/11/11(水) 01:27:50.51ID:zRgJ3mqg >>453
変数名 input を regexp とかに変えれば上手くいくはず
input は「自動変数」として設定済
https://docs.microsoft.com/powershell/module/microsoft.powershell.core/about/about_automatic_variables
変数名 input を regexp とかに変えれば上手くいくはず
input は「自動変数」として設定済
https://docs.microsoft.com/powershell/module/microsoft.powershell.core/about/about_automatic_variables
457デフォルトの名無しさん
2020/11/11(水) 02:35:05.41ID:wa6LgG/F >>453
俺のところじゃ、そのままでも正常だけどなあ(win7だからか? PS ver.5.1)
その3行だけじゃあ表示も出力もされないので
$file_contents
を最後に追加した
その入力ってJane系のiniファイル(SJIS)だよね?
ファイルに出力もして確認してみた
(デフォではUnicode16になっちゃうのでout-fileでencoding指定)
俺のところじゃ、そのままでも正常だけどなあ(win7だからか? PS ver.5.1)
その3行だけじゃあ表示も出力もされないので
$file_contents
を最後に追加した
その入力ってJane系のiniファイル(SJIS)だよね?
ファイルに出力もして確認してみた
(デフォではUnicode16になっちゃうのでout-fileでencoding指定)
458デフォルトの名無しさん
2020/11/11(水) 05:21:46.13ID:yU9bVv8n Windows 10、PSVersion 5.1 では、
input という名前が、ダメ!
input という名前が、ダメ!
459デフォルトの名無しさん
2020/11/11(水) 19:56:31.19ID:tbqNNnPd460デフォルトの名無しさん
2020/11/11(水) 22:49:04.53ID:yU9bVv8n VSCode を使っていれば、白色になる・注意されるから、おかしいとすぐに分かる
まあ、echo などのエイリアスも、白くなるけど
まあ、echo などのエイリアスも、白くなるけど
461デフォルトの名無しさん
2020/12/12(土) 00:58:58.79ID:c3naq2mv 質問
abc
を
a,b,c
に一発で変換する正規表現を教えてください!
abc
を
a,b,c
に一発で変換する正規表現を教えてください!
462デフォルトの名無しさん
2020/12/12(土) 07:54:00.68ID:hjoAkuIf (?!^|$) → ,
463デフォルトの名無しさん
2020/12/12(土) 09:13:39.74ID:weC8GZqi 461じゃないけど、知らなかった。
行頭じゃない&行末じゃない
だけ言えば字間全てに入れてくれるんだ。
行頭じゃない&行末じゃない
だけ言えば字間全てに入れてくれるんだ。
464デフォルトの名無しさん
2020/12/12(土) 09:45:07.71ID:DbQnMcwq s//,/g
だと、,a,b,c,になる
だと、,a,b,c,になる
465デフォルトの名無しさん
2020/12/12(土) 10:10:46.24ID:c3naq2mv >>462
ありがとうございます!
ありがとうございます!
466デフォルトの名無しさん
2020/12/15(火) 08:04:57.95ID:RAwP5vtJ ●Regular Expressionの使用環境
Perl5
●検索か置換か?
検索
●説明
文字列中のX,YY,ZZZのどれかが最初にあるまでのX,YY,ZZZを含む抽出
●対象データ
ABXCDXEFYYGH
ABYCZZZDXEFYYGH
ABCDXXGHZZ
●希望する結果
ABX
ABYCZZZ
ABCDX
お願いします
Perl5
●検索か置換か?
検索
●説明
文字列中のX,YY,ZZZのどれかが最初にあるまでのX,YY,ZZZを含む抽出
●対象データ
ABXCDXEFYYGH
ABYCZZZDXEFYYGH
ABCDXXGHZZ
●希望する結果
ABX
ABYCZZZ
ABCDX
お願いします
467デフォルトの名無しさん
2020/12/15(火) 08:15:41.96ID:M4wr588R >>466
($out) = ($in =~ /(.*?(?:X|YY|ZZZ))/)
($out) = ($in =~ /(.*?(?:X|YY|ZZZ))/)
468デフォルトの名無しさん
2020/12/15(火) 08:17:29.03ID:cXhQAKUm469デフォルトの名無しさん
2020/12/15(火) 08:49:36.46ID:RAwP5vtJ470デフォルトの名無しさん
2020/12/19(土) 09:53:24.06ID:YTpQ8Jg0 ublacklistでPinterestをブロックする正規表現教えて下さい
471デフォルトの名無しさん
2021/01/11(月) 15:03:41.29ID:A5mldiyH 行末以外の改行を任意の一文字(今回はアットマーク)に置換したいのですが可能でしょうか?
改行コードは、crもlfもcrlfも混じってるものとしてお願いしたいです。
改行コードは、crもlfもcrlfも混じってるものとしてお願いしたいです。
472デフォルトの名無しさん
2021/01/11(月) 15:10:21.63ID:WVZOdukT473デフォルトの名無しさん
2021/01/11(月) 15:31:25.19ID:zqhSwaSS 初学者なのでうまく伝わるか心配ですが、 固定長で末尾に改行が入っているレコードファイルを扱っています
その中で、末尾だけでなくレコード中にも改行コードが含まれるようなデータがあり、それを置換したいといった具合です。
UNIX上での話なので、Perlやsedで置換できればと思います。
よろしくお願いいたします。
その中で、末尾だけでなくレコード中にも改行コードが含まれるようなデータがあり、それを置換したいといった具合です。
UNIX上での話なので、Perlやsedで置換できればと思います。
よろしくお願いいたします。
474デフォルトの名無しさん
2021/01/11(月) 15:41:19.51ID:8i1ZTkbL sedはデフォルト行ベースなので改行コードを全部置換すればいい
475デフォルトの名無しさん
2021/01/11(月) 15:43:13.55ID:92N2rfT4 /[\r\n]++(?!$)/@/g
こんな感じじゃね?分からんけど
こんな感じじゃね?分からんけど
476デフォルトの名無しさん
2021/01/11(月) 16:15:14.39ID:rLqIFFRR s/\r?\n/@/gm;
どうよ?
どうよ?
477デフォルトの名無しさん
2021/01/11(月) 16:20:44.13ID:A2M5zvGV 固定長ごとに出てくる改行以外の改行ってことじゃね
改行含めて80文字固定長なら80文字目や160文字目以外の37文字目や53文字目に出てくる改行
改行含めて80文字固定長なら80文字目や160文字目以外の37文字目や53文字目に出てくる改行
478デフォルトの名無しさん
2021/01/11(月) 17:26:33.52ID:8i1ZTkbL あーすまんそういうことか
それだと固定長単位に読み取って置換と出力のループかな
while read -N10 line || [ "$line" ]; do
echo "$line" | tr -d '¥r¥n'
echo
done < input.txt
それだと固定長単位に読み取って置換と出力のループかな
while read -N10 line || [ "$line" ]; do
echo "$line" | tr -d '¥r¥n'
echo
done < input.txt
479デフォルトの名無しさん
2021/01/11(月) 17:59:11.32ID:Op1S7Ai1480デフォルトの名無しさん
2021/01/11(月) 18:31:58.04ID:RwOnRvzI 改行コードは、cr・lf・crlf の3種類あるのか?
固定長の末尾の改行の後には、何が入っている?
ヌル文字か?
例えば、100バイトの固定長で、内容が80バイトなら、
残りの20バイトには、何が入っている?
それとも、内容の80バイトの部分だけが、渡ってくるのか?
固定長の末尾の改行の後には、何が入っている?
ヌル文字か?
例えば、100バイトの固定長で、内容が80バイトなら、
残りの20バイトには、何が入っている?
それとも、内容の80バイトの部分だけが、渡ってくるのか?
481デフォルトの名無しさん
2021/01/11(月) 18:43:53.19ID:5PaUweSP CR なんとかReturn
LF LineFeed
CRLF なんとかReturnLineFeed
LF LineFeed
CRLF なんとかReturnLineFeed
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国国営メディア「沖縄は日本ではない」… [BFU★]
- 【こんなの初めて…】民泊には既にキャンセルも 中国の渡航自粛で [ぐれ★]
- 高市政権にパイプ役不在…日中高まる緊張 公明党の連立離脱影響、自民内にも懸念「自分でまいた種は自分で刈り取ってもらわないと」 [ぐれ★]
- 「稼ぐのよ!」高市総理が電話ガチャ切りで伝えたこと 鈴木憲和農林水産大臣が国政報告会に出席 自身が目指す農政の方針語る [煮卵★]
- 「どうしようもない」 ため息つくアジアの玄関口 中国の訪日自粛で−福岡市 [蚤の市★]
- 俳優 高岡蒼佑「エジプト出身とかナイジェリア出身とかの人が、日本の代表顔して移民の事とか話してるの見るとなんか違う気がする」★2 [Anonymous★]
- 【高市悲報】アメリカ戦争省「あのさ、何回シミュレートしてもわーくに中国に負けちゃうんだよね🤗」 [359965264]
- 自民「高市の一言でこれまで積み上げてきた関係が駄目になる。言葉の重みを分かっていない。自分でまいた種は自分で刈り取ってもらう」 [256556981]
- 中国国営放送「日本は琉球をただちに中国に返還せよ」 キタ━━━━(゚∀゚)━━━━!!!!! [314039747]
- 中国発日本行の航空券、491,000件(全体の32%)がキャンセルされたと判明。高市どうすんのこれ [603416639]
- 識者「『フリーパレスチナ』とかイキってる連中が台湾の話になると『中国を怒らせるな!』ってなる。ほんと左翼の正義って薄っぺらい」 [279254606]
- 日本株、大暴落!!! [252835186]
