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:enU8we0d302デフォルトの名無しさん
2020/07/03(金) 13:00:37.53ID:hVBUXcHj Ruby で、" を、\" に置換してから、
冒頭・末尾に、" を追加する
str = '"ja"'
str.gsub!( '"', '\"' )
puts '"' + str + '"'
#=> "\"ja\""
冒頭・末尾に、" を追加する
str = '"ja"'
str.gsub!( '"', '\"' )
puts '"' + str + '"'
#=> "\"ja\""
303デフォルトの名無しさん
2020/07/03(金) 13:11:32.91ID:yfao6bm4 VScodeのプラグインにSnippet Generatorてのがあるみたいだがそれじゃダメなん?
304302
2020/07/03(金) 14:28:11.33ID:hVBUXcHj 漏れなら、Ruby, PowerShell で、
クリップボード経由で変換するスクリプトを書いて、
ダブルクリックで起動できるように、起動部分をVBS で書くかな?
クリップボード経由で変換するスクリプトを書いて、
ダブルクリックで起動できるように、起動部分をVBS で書くかな?
305デフォルトの名無しさん
2020/07/03(金) 14:33:24.34ID:zEGBQA4b 正規表現よりもJSON.strinfigy()を使ったほうが簡単
スニペット用のJSONを出力すればいいだけだからJSでもRubyでも好きなの使えばいい
スニペット用のJSONを出力すればいいだけだからJSでもRubyでも好きなの使えばいい
306デフォルトの名無しさん
2020/07/13(月) 00:17:50.71ID:e/I4Ji0p JavaScript
const kaoru = '薫'
'[薫子]'.match(`[${kaoru}]`)
'[薫子]'.match(`\[${kaoru}\]`)
'[薫子]'.match(new RegExp(`[${kaoru}]`))
'[薫子]'.match(new RegExp(`\[${kaoru}\]`))
全てマッチしてしまうようですが、マッチさせたくありません
[ や ] そのものを文字として扱って判定するにはmatchの引数をどうすればよいでしょうか
const kaoru = '薫'
'[薫子]'.match(`[${kaoru}]`)
'[薫子]'.match(`\[${kaoru}\]`)
'[薫子]'.match(new RegExp(`[${kaoru}]`))
'[薫子]'.match(new RegExp(`\[${kaoru}\]`))
全てマッチしてしまうようですが、マッチさせたくありません
[ や ] そのものを文字として扱って判定するにはmatchの引数をどうすればよいでしょうか
307デフォルトの名無しさん
2020/07/13(月) 00:49:50.36ID:lkNbIdQ1308デフォルトの名無しさん
2020/07/13(月) 19:20:45.29ID:YirsSrYP 教えてください。基本的な質問で恐縮です。
20200706T030000Z
SUMMARY:打合せ
LOCATION:中野
DTEND:20200706T043000Z
から、
$1 0300
$2 打合せ
$3 中野
$4 0430
を抜き出すにはどのようにすればよいでしょうか。
20200706T030000Z
SUMMARY:打合せ
LOCATION:中野
DTEND:20200706T043000Z
から、
$1 0300
$2 打合せ
$3 中野
$4 0430
を抜き出すにはどのようにすればよいでしょうか。
309デフォルトの名無しさん
2020/07/13(月) 19:49:46.79ID:GfOrWnDk ^\d{8}T(\d{4}).*+\nSUMMARY:(.*+)\nLOCATION:(.*+)\nDTEND:\d{8}T(\d{4})
310デフォルトの名無しさん
2020/07/14(火) 13:34:31.12ID:h5j+nt7i 今まで何となくで使ってきたけどキャプチャの変数って式に対し1つしか用意されず
部分式呼び出しや量指定子の繰り返しで増やされずに上書きするみたいですね
^(?<y>2020[01]\d[0-3]\dT([0-2]\d[0-5]\d)00Z)(?:\n[^:\n]++:(.*+)){2}\n[^:]++:\g<y>
\1 \2 \3 \4 \5 \6
20200706T043000Z 0430 中野___
どの環境でもこういう仕様なの?
部分式呼び出しや量指定子の繰り返しで増やされずに上書きするみたいですね
^(?<y>2020[01]\d[0-3]\dT([0-2]\d[0-5]\d)00Z)(?:\n[^:\n]++:(.*+)){2}\n[^:]++:\g<y>
\1 \2 \3 \4 \5 \6
20200706T043000Z 0430 中野___
どの環境でもこういう仕様なの?
311デフォルトの名無しさん
2020/07/14(火) 13:41:52.76ID:tlUY963U312デフォルトの名無しさん
2020/07/14(火) 13:50:15.90ID:tlUY963U もしキャプチャグループが増えるとして
与えられた文字列によって増える順番が異なってくることが考えられるしね
与えられた文字列によって増える順番が異なってくることが考えられるしね
313デフォルトの名無しさん
2020/07/14(火) 21:21:06.51ID:h5j+nt7i キャプチャしたけりゃ繰り返しや\gで省略するなってことなんだろうけど
気になって出来る方法無いか調べてたら鬼雲で捕獲履歴参照なるものがあった
デフォでは無効になってるみたいだけど
ttps://github.com/k-takata/Onigmo/blob/master/doc/RE.ja
補記 5. 実装されているが、既定値では有効にしていない機能
+ 捕獲履歴参照
(?@...) と (?@<name>...)
例. /(?@a)*/.match("aaa") ==> [<0-1>, <1-2>, <2-3>]
使用方法は、sample/listcap.cを参照
有効にしていない理由は、どの程度役に立つかはっきりしないため
気になって出来る方法無いか調べてたら鬼雲で捕獲履歴参照なるものがあった
デフォでは無効になってるみたいだけど
ttps://github.com/k-takata/Onigmo/blob/master/doc/RE.ja
補記 5. 実装されているが、既定値では有効にしていない機能
+ 捕獲履歴参照
(?@...) と (?@<name>...)
例. /(?@a)*/.match("aaa") ==> [<0-1>, <1-2>, <2-3>]
使用方法は、sample/listcap.cを参照
有効にしていない理由は、どの程度役に立つかはっきりしないため
314デフォルトの名無しさん
2020/07/20(月) 23:26:29.84ID:jWd+3fJB ●Regular Expressionの使用環境
サクラエディタ
●検索か置換か?
置き換え
●説明
3の倍数行あるテキストを、3行ごとに1行にまとめたい
●対象データ ※対象データは、必ず半角英数字です。
e
A8
11A9
c
2
LB5
3
d
8X5
●希望する結果
e A8 11A9
c 2 LB5
3 d 8X5
よろしくお願いいたします。
サクラエディタ
●検索か置換か?
置き換え
●説明
3の倍数行あるテキストを、3行ごとに1行にまとめたい
●対象データ ※対象データは、必ず半角英数字です。
e
A8
11A9
c
2
LB5
3
d
8X5
●希望する結果
e A8 11A9
c 2 LB5
3 d 8X5
よろしくお願いいたします。
315デフォルトの名無しさん
2020/07/21(火) 00:07:21.07ID:HQA5x8Lv316デフォルトの名無しさん
2020/07/21(火) 10:14:18.12ID:7bBDhy0Z (?:^.*+|\G.*+[\r\n]+.*+)\K[\r\n]+(.*+)[\r\n]+
_\1_
"_" は半角sp
最終行末尾に改行が無くても可
_\1_
"_" は半角sp
最終行末尾に改行が無くても可
317デフォルトの名無しさん
2020/07/21(火) 10:18:39.84ID:7bBDhy0Z [\r\n]+
は空行がある場合にズレるから使ってる改行文字に直して
CRLFなら\r\n
は空行がある場合にズレるから使ってる改行文字に直して
CRLFなら\r\n
318デフォルトの名無しさん
2020/07/25(土) 05:22:11.92ID:ygqLeqBq 質問です。デリミタが基本的に「/」が選ばれるのなぜですか?慣例だから?
319デフォルトの名無しさん
2020/07/25(土) 08:47:52.57ID:1TMz0fAY 人間というのは楽をしようとする生き物なんだ
320デフォルトの名無しさん
2020/07/25(土) 17:47:34.31ID:bnVhPJSY321デフォルトの名無しさん
2020/07/27(月) 13:00:24.19ID:NlQGNze0 ●Regular Expressionの使用環境
Ruby2.5
●検索か置換か?
置換
●説明
スペースを削除したい。ただしダブルクオーテーション内は処理対象から除外
●対象データ
ABC, DE F,"G HI"
●希望する結果
ABC,DEF,"G HI"
ダブルクオーテーション内以外に対して処理するって結構ありそうだけど見つからないような・・
Ruby2.5
●検索か置換か?
置換
●説明
スペースを削除したい。ただしダブルクオーテーション内は処理対象から除外
●対象データ
ABC, DE F,"G HI"
●希望する結果
ABC,DEF,"G HI"
ダブルクオーテーション内以外に対して処理するって結構ありそうだけど見つからないような・・
322デフォルトの名無しさん
2020/07/27(月) 13:15:08.91ID:GIKub5S5 そのフォーマット通りなのか
あるいは任意でダブルクォーテーションの処理をするのかで変わってくるな
あるいは任意でダブルクォーテーションの処理をするのかで変わってくるな
323デフォルトの名無しさん
2020/07/27(月) 14:36:52.94ID:Dng4VfHm [ ](?![^",\n]*+"(?:,|$))
324デフォルトの名無しさん
2020/07/27(月) 15:27:53.85ID:OciGuojB (?>".*?"|[^"スペース]++)*+\Kスペース
を削除
を削除
325デフォルトの名無しさん
2020/07/28(火) 23:58:50.39ID:dH+Aps1K HTML中に
<a href="/a.html"><img src="test.jpg"></a>
と
<img src="test.jpg">
リンクに囲まれた test.jpg または、画像だけののどちらかがあって。
どちらにも引っかかる正規表現が書けません。
PHPの正規表現キボンヌ
自力では2つの正規表現を書いてしのいでいるので、一つで対応できますか?
現状は
リンクに囲まれた画像
/(^.*)(<a href=".*?>\n*<img .*?test.jpg.*?>\n*<\/a>)(.*$)/s
画像のみ
/(^.*)(<img .*?test.jpg.*?>)(.*$)/s
で対応しています。
<a href="/a.html"><img src="test.jpg"></a>
と
<img src="test.jpg">
リンクに囲まれた test.jpg または、画像だけののどちらかがあって。
どちらにも引っかかる正規表現が書けません。
PHPの正規表現キボンヌ
自力では2つの正規表現を書いてしのいでいるので、一つで対応できますか?
現状は
リンクに囲まれた画像
/(^.*)(<a href=".*?>\n*<img .*?test.jpg.*?>\n*<\/a>)(.*$)/s
画像のみ
/(^.*)(<img .*?test.jpg.*?>)(.*$)/s
で対応しています。
326デフォルトの名無しさん
2020/07/29(水) 01:26:58.01ID:W2ZwK0DF /<img[^>]+test\.jpg[^>]+>/g
JavaScript では、これで両方に一致する。
[^>]+ で、> 以外の文字を、1文字以上。
g で、すべての箇所に一致する
test.jpg だと、. は任意の1文字を表すから、意味が異なる。
ドットという文字に一致させるには、\. とエスケープが必要
JavaScript では、これで両方に一致する。
[^>]+ で、> 以外の文字を、1文字以上。
g で、すべての箇所に一致する
test.jpg だと、. は任意の1文字を表すから、意味が異なる。
ドットという文字に一致させるには、\. とエスケープが必要
327デフォルトの名無しさん
2020/07/29(水) 01:58:17.28ID:yfMsWFOq aタグ含めてマッチさせたいんでね?
それでも単純に|で繋げば済む話だと思うけど
それでも単純に|で繋げば済む話だと思うけど
328デフォルトの名無しさん
2020/07/29(水) 03:04:25.73ID:Qbap9rXN あってもなくてもいいものは末尾に?を付ければいいよ
((<a [^>]++>)?(?:<img[^>]+test\.jpg[^>]+>)(</a>)?)
((<a [^>]++>)?(?:<img[^>]+test\.jpg[^>]+>)(</a>)?)
329デフォルトの名無しさん
2020/07/29(水) 05:46:17.91ID:z6Fnx3oM >>9
これ面白いな。プログラミング授業に採用すべき。
これ面白いな。プログラミング授業に採用すべき。
330デフォルトの名無しさん
2020/07/29(水) 11:18:17.76ID:RU44SEhN >>326
ありがとうございます!
[^>]+ って発想がありませんでした・・。
>>328
ありがとうございます。
++ のところは一つですよね?
こんな感じをベースにやってみようと思います。
https://regexper.com/#%7C%28%28%3Ca%20%5B%5E%3E%5D%2B%3E%29%3F%28%3F%3A%3Cimg%5B%5E%3E%5D%2Btest%5C.jpg%5B%5E%3E%5D%2B%3E%29%28%3C%5C%2Fa%3E%29%3F%29%7C
ありがとうございます!
[^>]+ って発想がありませんでした・・。
>>328
ありがとうございます。
++ のところは一つですよね?
こんな感じをベースにやってみようと思います。
https://regexper.com/#%7C%28%28%3Ca%20%5B%5E%3E%5D%2B%3E%29%3F%28%3F%3A%3Cimg%5B%5E%3E%5D%2Btest%5C.jpg%5B%5E%3E%5D%2B%3E%29%28%3C%5C%2Fa%3E%29%3F%29%7C
331デフォルトの名無しさん
2020/07/29(水) 11:23:00.16ID:d73w3j+s >>325
こういうの正規表現じゃなくcss selectorやxpath使った方が簡単だよ
こういうの正規表現じゃなくcss selectorやxpath使った方が簡単だよ
332デフォルトの名無しさん
2020/07/29(水) 14:14:44.18ID:8IMt+CxM > リンクに囲まれた test.jpg または、画像だけののどちらかがあって
> /(^.*)(<a href=".*?>\n*<img .*?test.jpg.*?>\n*<\/a>)(.*$)/s
> /(^.*)(<img .*?test.jpg.*?>)(.*$)/s
^(?=.*test\.jpg).++$
こういう事では?
> /(^.*)(<a href=".*?>\n*<img .*?test.jpg.*?>\n*<\/a>)(.*$)/s
> /(^.*)(<img .*?test.jpg.*?>)(.*$)/s
^(?=.*test\.jpg).++$
こういう事では?
333325
2020/07/29(水) 14:47:56.12ID:RU44SEhN334デフォルトの名無しさん
2020/07/31(金) 01:03:19.74ID:sgil418T335デフォルトの名無しさん
2020/08/01(土) 06:04:54.43ID:Wz14ZhNZ cssなんですが、
margin:10px;padding:10px;border:1px solid red;backgroun-color:red;font-size:16px;
というものがあったとして、正規表現でborderのプロパティと内容だけを削除できないでしょうか?
欲しい結果どす
margin:10px;padding:10px;backgroun-color:red;font-size:16px;
ちなみにborderの値は
1px red solidの場合もあれば
solid 1px redの場合もあります
つまり、borderプロパティに不随する値を消したいのです(´・ω・`)
margin:10px;padding:10px;border:1px solid red;backgroun-color:red;font-size:16px;
というものがあったとして、正規表現でborderのプロパティと内容だけを削除できないでしょうか?
欲しい結果どす
margin:10px;padding:10px;backgroun-color:red;font-size:16px;
ちなみにborderの値は
1px red solidの場合もあれば
solid 1px redの場合もあります
つまり、borderプロパティに不随する値を消したいのです(´・ω・`)
336デフォルトの名無しさん
2020/08/01(土) 06:13:27.50ID:xL8Di7oE 〜; か、;〜; の、〜の中に、border という文字列が、あれば良いのか?
337デフォルトの名無しさん
2020/08/01(土) 06:32:02.40ID:Wz14ZhNZ どういうことですか?
borderプロパティとその値を削除したい感じです
border(プロパティ):red 1px solid(値);
borderプロパティとその値を削除したい感じです
border(プロパティ):red 1px solid(値);
338デフォルトの名無しさん
2020/08/01(土) 06:38:27.91ID:hnL660kY border[^;\n]++;
339デフォルトの名無しさん
2020/08/01(土) 06:52:53.24ID:GqyTFtiM \rも入れといたほうがいいだろ
340デフォルトの名無しさん
2020/08/01(土) 06:59:35.99ID:GqyTFtiM あとborder-color:〜とかも消えちゃうね
341デフォルトの名無しさん
2020/08/01(土) 07:21:39.09ID:GqyTFtiM あとプロパティじゃなくて値やコメントにborderって入る可能性が無いかな?
\bborder\s*:[^;}\r\n]++;?
ぐらいがいいのではないかな
これでもxx-borderとかプロパティがあったり?(無いだろうけど)
、また値を改行されて書かれたりしたらダメなんだが
\bborder\s*:[^;}\r\n]++;?
ぐらいがいいのではないかな
これでもxx-borderとかプロパティがあったり?(無いだろうけど)
、また値を改行されて書かれたりしたらダメなんだが
342デフォルトの名無しさん
2020/08/01(土) 07:38:14.81ID:GqyTFtiM 処理系がかかれてないので++がダメだったら+に代えるように
343デフォルトの名無しさん
2020/08/01(土) 09:01:52.60ID:Wz14ZhNZ すみません
meryです
meryです
344デフォルトの名無しさん
2020/08/01(土) 12:04:03.32ID:kkqe9vdZ border(-[a-z]+)?:[^;]+;
345デフォルトの名無しさん
2020/08/01(土) 18:09:27.98ID:Wz14ZhNZ ありがとうございます
できましたが、解説サイトありませんか?
記号がヒットしないもんで、、、
できましたが、解説サイトありませんか?
記号がヒットしないもんで、、、
346デフォルトの名無しさん
2020/08/01(土) 18:40:27.24ID:hnL660kY347デフォルトの名無しさん
2020/08/01(土) 19:21:49.80ID:kkqe9vdZ (自分の投稿分だけ)
[]は[]内に挙げた任意の1文字
+は直前の文字だけで構成される文字列,*は0文字以上、+は1文字以上
つまり[a-z]+はa-zの範囲の文字だけで構成される長さ1以上の任意の文字列
?は直前の文字(列)がないものも対象(あってもなくてもいいということになる)
[]内先頭の^は否定
つまり[^;]は;以外の任意の文字
まとめると:の前は
border, border-width等borderファミリーまとめて対象にしている
:の後は:直後〜最初の;までが対象
>>344では:以前にスペースがあると対象にならない
[]は[]内に挙げた任意の1文字
+は直前の文字だけで構成される文字列,*は0文字以上、+は1文字以上
つまり[a-z]+はa-zの範囲の文字だけで構成される長さ1以上の任意の文字列
?は直前の文字(列)がないものも対象(あってもなくてもいいということになる)
[]内先頭の^は否定
つまり[^;]は;以外の任意の文字
まとめると:の前は
border, border-width等borderファミリーまとめて対象にしている
:の後は:直後〜最初の;までが対象
>>344では:以前にスペースがあると対象にならない
348デフォルトの名無しさん
2020/08/01(土) 22:21:06.56ID:Wz14ZhNZ 丁寧にありがとうございます。難しいですね。
border(-[a-z]+)?:の部分はなぜグループ化する必要があるんでしょうか?
border(-[a-z]+)?:の部分はなぜグループ化する必要があるんでしょうか?
349デフォルトの名無しさん
2020/08/01(土) 22:43:25.14ID:LBbA9Kf+350デフォルトの名無しさん
2020/08/01(土) 22:57:20.65ID:Wz14ZhNZ borderとborder-styleなどを対象にする場合、括弧を使うことで不足分を補うというイメージでしょうか?
borderとborder-styleという指定になってるんですね
borderとborder-styleという指定になってるんですね
351デフォルトの名無しさん
2020/08/01(土) 23:05:44.88ID:LBbA9Kf+ >>350
border(-[a-z]+)?: の ? をどこに効かせるか
border-([a-z]+)?: だと - が必須になる(- に ?が効かない)ので border: にマッチしない(border-abcdef: にはマッチする)
正規表現 入門 でググってそれ見ながら ↑のパズルで遊んでみたら?
border(-[a-z]+)?: の ? をどこに効かせるか
border-([a-z]+)?: だと - が必須になる(- に ?が効かない)ので border: にマッチしない(border-abcdef: にはマッチする)
正規表現 入門 でググってそれ見ながら ↑のパズルで遊んでみたら?
352デフォルトの名無しさん
2020/08/01(土) 23:08:11.58ID:oWJPeiSz border-radiusも忘れないであげてください...
353デフォルトの名無しさん
2020/08/01(土) 23:12:41.55ID:+HD/AULr 説明が下手だと良く言われるでしょ?
笑えるくらいグダグダなのなw
笑えるくらいグダグダなのなw
354デフォルトの名無しさん
2020/08/01(土) 23:38:46.09ID:o0eKxhHR >>353
はいどうぞw
はいどうぞw
355デフォルトの名無しさん
2020/08/02(日) 04:53:04.96ID:Q2aVGOnZ Mery(鬼雲の仕様?)なら
border\s*(-[a-z]+)?:[^;]+;
で:前の改行や空白文字も対象にしてくれるけど
エンジンによっては対象にならないし
可能なパターン全てに対応させようと思ったら正規表現メモになってしまう(相当面倒だということ)
どーでもいいけど
[-a-z]か(-[a-z]+)*にした方が良かったか
border-なんとか-かんとか
みたいなのもある?
border\s*(-[a-z]+)?:[^;]+;
で:前の改行や空白文字も対象にしてくれるけど
エンジンによっては対象にならないし
可能なパターン全てに対応させようと思ったら正規表現メモになってしまう(相当面倒だということ)
どーでもいいけど
[-a-z]か(-[a-z]+)*にした方が良かったか
border-なんとか-かんとか
みたいなのもある?
356デフォルトの名無しさん
2020/08/02(日) 07:34:01.59ID:WI1GGX9r 最小一致のやり方を教えて下さい
<h1>aaa</h1><h1>aaa</h1>
最初のh1要素だけ取り出すことはできないでしょうか?
<h1>(*?)</h1>
これではだめです。
>>351
ありがとう
手を動かします
<h1>aaa</h1><h1>aaa</h1>
最初のh1要素だけ取り出すことはできないでしょうか?
<h1>(*?)</h1>
これではだめです。
>>351
ありがとう
手を動かします
357デフォルトの名無しさん
2020/08/02(日) 07:46:47.76ID:afjdMLlX <h1>[^>]+h1>
[^>]+ は、> 以外の文字が、1文字以上
[^>]+ は、> 以外の文字が、1文字以上
358デフォルトの名無しさん
2020/08/02(日) 08:08:51.02ID:7mfh4V7b <h1>(?>.*?</h1>)
<h1>(?>(?s).*?</h1>)
<h1>(?~</h1>)</h1>
<h1><a id="abc">abc</a>
</h1>
<h1>(?>(?s).*?</h1>)
<h1>(?~</h1>)</h1>
<h1><a id="abc">abc</a>
</h1>
359デフォルトの名無しさん
2020/08/02(日) 08:08:54.84ID:SCuZm8dn ^.*?<h1>\K.*?(?=</h1>)
360デフォルトの名無しさん
2020/08/02(日) 08:16:49.14ID:piHYqXfk (?~</?+h1>)(?=</h1>)
361デフォルトの名無しさん
2020/08/02(日) 08:18:05.24ID:1ddBclsD あ、ダメだこれ>>360
362デフォルトの名無しさん
2020/08/02(日) 10:46:18.27ID:WI1GGX9r363デフォルトの名無しさん
2020/08/02(日) 10:54:32.92ID:WI1GGX9r364デフォルトの名無しさん
2020/08/02(日) 10:55:57.37ID:WI1GGX9r 順番に置き換えていくならいいですが、全て置き換えを行う場合
>>357だと出来ないですね
>>357だと出来ないですね
365デフォルトの名無しさん
2020/08/02(日) 11:08:50.52ID:SCuZm8dn 削除
^.*?\K<h1>.*?</h1>(.*)
\1
ABCに置換
ABC\1
^.*?\K<h1>.*?</h1>(.*)
\1
ABCに置換
ABC\1
366デフォルトの名無しさん
2020/08/03(月) 01:53:48.18ID:p6SF3tC+ すべてにマッチする、オプションは無いの?
367デフォルトの名無しさん
2020/08/03(月) 03:15:13.61ID:/ZQCQ5dx368デフォルトの名無しさん
2020/08/05(水) 13:11:50.02ID:zXYtyxDC ●Regular Expressionの使用環境
サクラエディタ
●検索か置換か?
置換
●説明
空白を除去するのに\sで検索してますが
アルファベットの文字間では空白を残したい
●対象データ
ジャッキー チェン:Jackie Chan
●希望する結果
ジャッキーチェン:Jackie Chan
サクラエディタ
●検索か置換か?
置換
●説明
空白を除去するのに\sで検索してますが
アルファベットの文字間では空白を残したい
●対象データ
ジャッキー チェン:Jackie Chan
●希望する結果
ジャッキーチェン:Jackie Chan
369デフォルトの名無しさん
2020/08/05(水) 14:03:13.77ID:xp5DSzK/ スペースの直前直後が[a-zA-Z]ならマッチせず
それ以外ならマッチするという正規表現でいいのかな?
もうちょっと仕様を詰めたほうがいい気がする
John Paul IIの2つ目のスペースは削除?
George W. Bushの2つ目のスペースは削除?
それ以外ならマッチするという正規表現でいいのかな?
もうちょっと仕様を詰めたほうがいい気がする
John Paul IIの2つ目のスペースは削除?
George W. Bushの2つ目のスペースは削除?
370デフォルトの名無しさん
2020/08/05(水) 14:03:44.33ID:UoH2gIZd (?<=[^A-Za-z])\s(?=[^A-Za-z])|(?<=[^A-Za-z])\s(?=[A-Za-z])|(?<=[A-Za-z])\s(?=[^A-Za-z])
371デフォルトの名無しさん
2020/08/05(水) 16:38:08.92ID:zXYtyxDC372デフォルトの名無しさん
2020/08/05(水) 16:57:46.08ID:UoH2gIZd >>371
^\s++|\s++$|(?<=[^A-Za-z])\s(?=[^A-Za-z])|(?<=[^A-Za-z])\s(?=[A-Za-z])|(?<=[A-Za-z])\s(?=[^A-Za-z])
^\s++|\s++$|(?<=[^A-Za-z])\s(?=[^A-Za-z])|(?<=[^A-Za-z])\s(?=[A-Za-z])|(?<=[A-Za-z])\s(?=[^A-Za-z])
373デフォルトの名無しさん
2020/08/05(水) 17:13:59.30ID:xp5DSzK/ ORでは1つで良いような
(?<![a-zA-Z])¥s|¥s(?![a-zA-Z])
(?<![a-zA-Z])¥s|¥s(?![a-zA-Z])
374デフォルトの名無しさん
2020/08/05(水) 20:14:19.67ID:TJuHD2ix ゼロ個でも
\s(?!(?<=[A-Za-z].)(?=[A-Za-z]))
\s(?!(?<=[A-Za-z].)(?=[A-Za-z]))
375デフォルトの名無しさん
2020/08/05(水) 21:50:35.87ID:xp5DSzK/376デフォルトの名無しさん
2020/08/06(木) 11:27:45.13ID:mqEUv0B4 成り立ってるそれ?
377デフォルトの名無しさん
2020/08/06(木) 11:59:29.23ID:04L3Tvl2 \s(?!(?<=[A-Za-z].)[A-Za-z])
肯定先読み要らないよね。ある方が見やすい気がしなくもないけど
肯定先読み要らないよね。ある方が見やすい気がしなくもないけど
378デフォルトの名無しさん
2020/08/06(木) 16:39:38.24ID:LCybI18e 374の「選択子がゼロ個」と「集合の否定」の話じゃなければアサーションを入れ子にする必要もないのですよ
\s(?>(?![A-Za-z])|(?<![A-Za-z].))
\s(?>(?![A-Za-z])|(?<![A-Za-z].))
379デフォルトの名無しさん
2020/08/10(月) 00:32:29.15ID:foQnjRqn ●使用環境
RegEx Lab(iOSアプリ,ICU Regex)
iOSショートカットアプリ
●検索か置換か?
検索
●説明
以下の2パターンのデータから"あいうえお"を取り出す正規表現を教えてください。
自分なりに考えたのですが↓ではうまくいきませんでした。
名前(?::<.+?>|:)(.*?)(?:</a>|$)
ちなみにCotEditorでは↑の正規表現でも検索できました。
●対象データ1
〜
<div class="abcde_abcde">
名前:あいうえお
</div><!--abcde_abcde-->
〜
●対象データ2
〜
<div class="abcde_abcde">
名前:<a href="https://www.google.com">あいうえお</a>
</div><!--abcde_abcde-->
〜
●希望する結果
あいうえお
RegEx Lab(iOSアプリ,ICU Regex)
iOSショートカットアプリ
●検索か置換か?
検索
●説明
以下の2パターンのデータから"あいうえお"を取り出す正規表現を教えてください。
自分なりに考えたのですが↓ではうまくいきませんでした。
名前(?::<.+?>|:)(.*?)(?:</a>|$)
ちなみにCotEditorでは↑の正規表現でも検索できました。
●対象データ1
〜
<div class="abcde_abcde">
名前:あいうえお
</div><!--abcde_abcde-->
〜
●対象データ2
〜
<div class="abcde_abcde">
名前:<a href="https://www.google.com">あいうえお</a>
</div><!--abcde_abcde-->
〜
●希望する結果
あいうえお
380デフォルトの名無しさん
2020/08/10(月) 01:07:48.09ID:F9d2D5aE381デフォルトの名無しさん
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 をコピーしてから、やるとか
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 中国国営メディア「沖縄は日本ではない」… [BFU★]
- 【こんなの初めて…】民泊には既にキャンセルも 中国の渡航自粛で [ぐれ★]
- 高市政権にパイプ役不在…日中高まる緊張 公明党の連立離脱影響、自民内にも懸念「自分でまいた種は自分で刈り取ってもらわないと」 [ぐれ★]
- 「稼ぐのよ!」高市総理が電話ガチャ切りで伝えたこと 鈴木憲和農林水産大臣が国政報告会に出席 自身が目指す農政の方針語る [煮卵★]
- 「どうしようもない」 ため息つくアジアの玄関口 中国の訪日自粛で−福岡市 [蚤の市★]
- 俳優 高岡蒼佑「エジプト出身とかナイジェリア出身とかの人が、日本の代表顔して移民の事とか話してるの見るとなんか違う気がする」★2 [Anonymous★]
- 【高市悲報】アメリカ戦争省「あのさ、何回シミュレートしてもわーくに中国に負けちゃうんだよね🤗」 [359965264]
- 自民「高市の一言でこれまで積み上げてきた関係が駄目になる。言葉の重みを分かっていない。自分でまいた種は自分で刈り取ってもらう」 [256556981]
- 中国国営放送「日本は琉球をただちに中国に返還せよ」 キタ━━━━(゚∀゚)━━━━!!!!! [314039747]
- 中国発日本行の航空券、491,000件(全体の32%)がキャンセルされたと判明。高市どうすんのこれ [603416639]
- 識者「『フリーパレスチナ』とかイキってる連中が台湾の話になると『中国を怒らせるな!』ってなる。ほんと左翼の正義って薄っぺらい」 [279254606]
- 日本株、大暴落!!! [252835186]
