Regular Expressionスレです。
質問する場合は必ず実装言語や処理系ソフトウェア名を示してください。
前スレ
Regular Expression(正規表現) Part13
http://echo.2ch.net/test/read.cgi/tech/1415149975/
次スレは>>980宜しく
天ぷら等2以降
探検
Regular Expression(正規表現) Part14 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2017/03/15(水) 02:04:35.47ID:e01p03UP501デフォルトの名無しさん
2018/05/05(土) 21:57:45.66ID:+tF+3NSL 鬼雲…だと…?!
502デフォルトの名無しさん
2018/05/07(月) 13:28:13.91ID:XtvW294Z 正規表現をちゃんと論理的に導きたいと思って参考になる本を
買ったら必要な予備知識に群とか環が出てきて即諦めた
正規表現周りの開発をしてる人達はすごい人達なんだなぁ
すごさを直で実感出来た
買ったら必要な予備知識に群とか環が出てきて即諦めた
正規表現周りの開発をしてる人達はすごい人達なんだなぁ
すごさを直で実感出来た
503デフォルトの名無しさん
2018/05/07(月) 14:59:22.19ID:QMgv+0U5 用語に慣れてないだけだろ
やってることは大したことじゃない
やってることは大したことじゃない
504デフォルトの名無しさん
2018/05/07(月) 18:08:31.65ID:XtvW294Z まぁ膨大な時間と労力をかければ自分にも分かるんだろうけど
現実的じゃないんだよなぁ(人の何倍も時間かかるだろうし)
これからは正規表現技術者の努力に感謝しながら正規表現を
使おうと思います(^^)>
現実的じゃないんだよなぁ(人の何倍も時間かかるだろうし)
これからは正規表現技術者の努力に感謝しながら正規表現を
使おうと思います(^^)>
505デフォルトの名無しさん
2018/05/14(月) 07:31:45.21ID:0PI4I4+g JavaScriptによる正規表現チェッカー
くっそ長いので短縮
https://goo. gl/CE3aZ8
https://fatiherikli.github.io/fil/#eyJwYXRoIjoiSmF2YVNjcmlwdFRlc3QxLmpzIiwic291cmNlIjoiLyog5q2j6KaP6KG
o54++44Oe44OD44OB44OG44K544OIICovXG5cbi8vIOato+imj+ihqOePvlxudmFyIHJlID0gbmV3IFJlZ0V4cCgv
XFxkKy9nKTtcblxuLy8g44OG44Kt44K544OIXG52YXIgdGV4dCA9IChmdW5jdGlvbiAoKSB7LypcbmFhYVxuYmIx
MmJcbmM1NjdjYzg5XG4qL30pLnRvU3RyaW5nKCkuc3BsaXQoL1xcbi8pLnNsaWNlKDEsLTEpO1xuXG5jb25zb2x
lLmxvZyhcIlJlZ0V4cDpcIiwgcmUudG9TdHJpbmcoKSlcbmNvbnNvbGUubG9nKFwiVGV4dDpcIiwgdGV4dCk7XG5c
bnRleHQuZm9yRWFjaChmdW5jdGlvbihsaW5lKSB7XG4gICAgY29uc29sZS5sb2coXCJsaW5lOlwiLCBsaW5lKTtcbiA
gICB2YXIgcmVzdWx0ID0gbGluZS5tYXRjaChyZSk7XG4gICAgaWYocmVzdWx0KVxuICAgICAgICBjb25zb2xlLmxv
ZyhcInJlc3VsdDpcIiwgcmVzdWx0KTtcbiAgICBlbHNlXG4gICAgICAgIGNvbnNvbGUubG9nKFwicmVzdWx0OlwiLCBcIm51bGxcIik7XG59KVxuIn0
くっそ長いので短縮
https://goo. gl/CE3aZ8
https://fatiherikli.github.io/fil/#eyJwYXRoIjoiSmF2YVNjcmlwdFRlc3QxLmpzIiwic291cmNlIjoiLyog5q2j6KaP6KG
o54++44Oe44OD44OB44OG44K544OIICovXG5cbi8vIOato+imj+ihqOePvlxudmFyIHJlID0gbmV3IFJlZ0V4cCgv
XFxkKy9nKTtcblxuLy8g44OG44Kt44K544OIXG52YXIgdGV4dCA9IChmdW5jdGlvbiAoKSB7LypcbmFhYVxuYmIx
MmJcbmM1NjdjYzg5XG4qL30pLnRvU3RyaW5nKCkuc3BsaXQoL1xcbi8pLnNsaWNlKDEsLTEpO1xuXG5jb25zb2x
lLmxvZyhcIlJlZ0V4cDpcIiwgcmUudG9TdHJpbmcoKSlcbmNvbnNvbGUubG9nKFwiVGV4dDpcIiwgdGV4dCk7XG5c
bnRleHQuZm9yRWFjaChmdW5jdGlvbihsaW5lKSB7XG4gICAgY29uc29sZS5sb2coXCJsaW5lOlwiLCBsaW5lKTtcbiA
gICB2YXIgcmVzdWx0ID0gbGluZS5tYXRjaChyZSk7XG4gICAgaWYocmVzdWx0KVxuICAgICAgICBjb25zb2xlLmxv
ZyhcInJlc3VsdDpcIiwgcmVzdWx0KTtcbiAgICBlbHNlXG4gICAgICAgIGNvbnNvbGUubG9nKFwicmVzdWx0OlwiLCBcIm51bGxcIik7XG59KVxuIn0
506デフォルトの名無しさん
2018/05/15(火) 21:31:31.85ID:xchMEgzc ちょっと修正
https://goo. gl/M2Fn68
https://goo. gl/M2Fn68
507デフォルトの名無しさん
2018/05/19(土) 02:57:37.83ID:F73VBvr9 Linuxに触れるまで正規表現に方言があるなんて知らなかった
基本正規表現だの拡張正規表現だの
vimの置換で悩んでたら原因がエスケープの有無が原因とかもうね
ある程度は使えるが先読みとか後読みとか僅かでも深入りすると余計に混乱する
基本正規表現だの拡張正規表現だの
vimの置換で悩んでたら原因がエスケープの有無が原因とかもうね
ある程度は使えるが先読みとか後読みとか僅かでも深入りすると余計に混乱する
508デフォルトの名無しさん
2018/05/19(土) 11:08:45.44ID:rxs2hai/ 小さい世界で囲い込まれてれば楽だよな
ただし何かの拍子ではみ出した時に世界の広さを知って己の無力さを痛感する
よくあるパターン
ただし何かの拍子ではみ出した時に世界の広さを知って己の無力さを痛感する
よくあるパターン
509デフォルトの名無しさん
2018/05/23(水) 19:28:29.89ID:Au5e7VGg 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
QBPEH
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
QBPEH
510デフォルトの名無しさん
2018/05/24(木) 10:47:44.54ID:cPlRxlDn QBPEH
511デフォルトの名無しさん
2018/05/25(金) 13:52:01.06ID:X/Hngdv+ HTMLの解析を正規表現でやりたいのですが
<a href="xxxxx"><img src="yyyyy" /></a>
という風に、<a> で括られた img の src だけを抽出したいんですけど
どうしたらいいのでしょう。
<a> で括られてない
<img src="yyyyy" />
は除外したいのです。
<a href="xxxxx"><img src="yyyyy" /></a>
という風に、<a> で括られた img の src だけを抽出したいんですけど
どうしたらいいのでしょう。
<a> で括られてない
<img src="yyyyy" />
は除外したいのです。
512デフォルトの名無しさん
2018/05/25(金) 13:53:08.12ID:X/Hngdv+ あ、すみません
<a href="xxxxx"><img src="yyyyy" /></a>
<a href="xxxxx">あああ<img src="yyyyy" /></a>
<a href="xxxxx"><img src="yyyyy" />いいい</a>
<a href="xxxxx">あああ<img src="yyyyy" />いいい</a>
<a href="xxxxx"><img src="yyyyy" /><div>あああ<div></a>
みたいに、<a> の中は <img> 以外のゴミも入ってきます。
※ゴミは無視したい
<a href="xxxxx"><img src="yyyyy" /></a>
<a href="xxxxx">あああ<img src="yyyyy" /></a>
<a href="xxxxx"><img src="yyyyy" />いいい</a>
<a href="xxxxx">あああ<img src="yyyyy" />いいい</a>
<a href="xxxxx"><img src="yyyyy" /><div>あああ<div></a>
みたいに、<a> の中は <img> 以外のゴミも入ってきます。
※ゴミは無視したい
513デフォルトの名無しさん
2018/05/25(金) 14:10:36.40ID:dgrSTrid514デフォルトの名無しさん
2018/05/25(金) 16:20:05.07ID:fgSfMucA >>513
<a href=""></a><img src="1.jpg"><a href=""></a>
<a href=""></a><img src="1.jpg"><a href=""></a>
515デフォルトの名無しさん
2018/05/25(金) 20:00:28.32ID:OUvr9ihJ 頑張ってみてもこの程度が限界
https://regex101.com/r/VYrYNO/1
で, >>511がHTMLの解析を正規表現だけでやる理由は何だ?
Pythonのhtml.parser, RubyのNokogiri, PHPならGoutter, それ以外の言語でも間違いなくHTMLパーサは誰かしら作ってる
そんな中で何故正規表現だけで?ぶっちゃけこういう用途には向いてない, というかHTMLの構文規則は正規言語を超えるんだけど, 分かってる?
https://regex101.com/r/VYrYNO/1
で, >>511がHTMLの解析を正規表現だけでやる理由は何だ?
Pythonのhtml.parser, RubyのNokogiri, PHPならGoutter, それ以外の言語でも間違いなくHTMLパーサは誰かしら作ってる
そんな中で何故正規表現だけで?ぶっちゃけこういう用途には向いてない, というかHTMLの構文規則は正規言語を超えるんだけど, 分かってる?
516デフォルトの名無しさん
2018/05/25(金) 20:29:09.95ID:rhJz1xPv パーサかましてXPathで必要な情報だけ抜くのが基本だしな
どうしても使えないっていう理由があるなら仕方ないけど
どうしても使えないっていう理由があるなら仕方ないけど
517デフォルトの名無しさん
2018/05/25(金) 21:21:37.93ID:lQiYp+1p 鬼雲限定
<a (?~</a>)<img src="([^"]+)"[^>]*>(?~<a )</a>
<a (?~</a>)<img src="([^"]+)"[^>]*>(?~<a )</a>
518デフォルトの名無しさん
2018/05/25(金) 22:28:52.14ID:Cqv+6nk2 ■変更前
004a34
A521n2
785b66
■変更後
0049934
99521992
7859966
----------------------
数値以外を99に置換したいです
お願いします
004a34
A521n2
785b66
■変更後
0049934
99521992
7859966
----------------------
数値以外を99に置換したいです
お願いします
519デフォルトの名無しさん
2018/05/25(金) 23:31:17.71ID:gd/oxjVv 木構造のものは、正規表現じゃ無理
1< 2< abc 3> 4>
2<からの最短マッチで、対応する3>を取れるけど、
1<からの最短マッチで、対応する4>を取れない。
3>にマッチしてしまうから
1< 2< 3< abc 4> 5> 6>
これでも、2<と5>をマッチさせられない。
最長・最短マッチでも、マッチしない
CSS セレクターを使う、jQuery, RubyのNokogiri などを使え。
これらの使い方は、ほぼ同じ
1< 2< abc 3> 4>
2<からの最短マッチで、対応する3>を取れるけど、
1<からの最短マッチで、対応する4>を取れない。
3>にマッチしてしまうから
1< 2< 3< abc 4> 5> 6>
これでも、2<と5>をマッチさせられない。
最長・最短マッチでも、マッチしない
CSS セレクターを使う、jQuery, RubyのNokogiri などを使え。
これらの使い方は、ほぼ同じ
520デフォルトの名無しさん
2018/05/25(金) 23:43:29.83ID:OUvr9ihJ >>518
数値以外と簡単に言うが改行文字や空白等の扱いはどうするんだ
変換対象文字をちゃんと明示しないと
/[^0-9]/99/g
こんなもんが欲しいわけではあるまい
とりあえずASCII印字可能文字に限るなら
/[\x21-\x2F\x40-\x7E]/99/g
だが当然マルチバイト文字は対象外
数値以外と簡単に言うが改行文字や空白等の扱いはどうするんだ
変換対象文字をちゃんと明示しないと
/[^0-9]/99/g
こんなもんが欲しいわけではあるまい
とりあえずASCII印字可能文字に限るなら
/[\x21-\x2F\x40-\x7E]/99/g
だが当然マルチバイト文字は対象外
521デフォルトの名無しさん
2018/05/25(金) 23:44:35.69ID:OUvr9ihJ \x40じゃなくて\x3Aだわ
522デフォルトの名無しさん
2018/05/26(土) 10:42:28.41ID:oqQZJpqn >>517
非包含オペレータか
非包含オペレータか
523デフォルトの名無しさん
2018/05/26(土) 17:59:00.22ID:xbMfHZm2 >>519
再帰を使えば、対応する括弧のネスト対応ぐらいならできるらしいよ(鬼雲、PCRE)
<([^<>]++|(?R))*>
# [^<>]++は(?>[^<>]+)としてもよい(どっちもバックトラックしないと思う)
# (?R)は、(?0)とも書ける
# (<([^<>]++|(?1))*>)
\g<-n>を使ってもできる(鬼雲だけ?)
(<(?:\g<-1>|[^<>])*>)
# \g<-1>は(?-1)とも書ける
# ここでは\g<-1>を先に書いたが上と同じく後ろに書いても同じ
再帰を使えば、対応する括弧のネスト対応ぐらいならできるらしいよ(鬼雲、PCRE)
<([^<>]++|(?R))*>
# [^<>]++は(?>[^<>]+)としてもよい(どっちもバックトラックしないと思う)
# (?R)は、(?0)とも書ける
# (<([^<>]++|(?1))*>)
\g<-n>を使ってもできる(鬼雲だけ?)
(<(?:\g<-1>|[^<>])*>)
# \g<-1>は(?-1)とも書ける
# ここでは\g<-1>を先に書いたが上と同じく後ろに書いても同じ
524デフォルトの名無しさん
2018/05/26(土) 19:07:35.21ID:vUfk79H6 https://regex101.com/r/VYrYNO/1
なぁこれメンテしたいか?というか出来るか?なぁ?
(?i:<a(?:\s+[a-z][a-z0-9]*(?:=(?:"[^"]*"|'[^']+'))?)*>)
((?:
(?i:<img(?:\s+(?:src="([^"]+)"|[a-z][a-z0-9]*(?:=(?:"[^"]*"|'[^']+'))?))*(?:\s*\/)?>)
|(?i:<([a-z][a-z0-9]*)(?:\s+[a-z][a-z0-9]*(?:=(?:"[^"]*"|'[^']+'))?)*>(?1)<\/\3>)
|(?i:<[a-z][a-z0-9]*(?:\s+[a-z][a-z0-9]*(?:=(?:"[^"]*"|'[^']+'))?)*\s*\/>|.*?))*)
(?i:<\/a>)
なぁこれメンテしたいか?というか出来るか?なぁ?
(?i:<a(?:\s+[a-z][a-z0-9]*(?:=(?:"[^"]*"|'[^']+'))?)*>)
((?:
(?i:<img(?:\s+(?:src="([^"]+)"|[a-z][a-z0-9]*(?:=(?:"[^"]*"|'[^']+'))?))*(?:\s*\/)?>)
|(?i:<([a-z][a-z0-9]*)(?:\s+[a-z][a-z0-9]*(?:=(?:"[^"]*"|'[^']+'))?)*>(?1)<\/\3>)
|(?i:<[a-z][a-z0-9]*(?:\s+[a-z][a-z0-9]*(?:=(?:"[^"]*"|'[^']+'))?)*\s*\/>|.*?))*)
(?i:<\/a>)
525デフォルトの名無しさん
2018/05/26(土) 19:08:54.60ID:vUfk79H6526デフォルトの名無しさん
2018/06/23(土) 01:47:09.94ID:19kQ7FFf527デフォルトの名無しさん
2018/06/24(日) 13:33:59.68ID:wSHpLaLO 文字列の中から数字13桁(それ未満でも超えてもNG)を抽出するにはどうしたらいいでしょう
JANコードらしきを抜き取りたいのです。
候補を抽出してから後でチェックデジット計算しますので
数字13桁のみで大丈夫です。
JANコードらしきを抜き取りたいのです。
候補を抽出してから後でチェックデジット計算しますので
数字13桁のみで大丈夫です。
528デフォルトの名無しさん
2018/06/24(日) 15:06:08.45ID:F1zD07yq 数字40桁くらい連続してたらどうする?
529デフォルトの名無しさん
2018/06/24(日) 16:56:18.47ID:wSHpLaLO 40桁はJANコードじゃないので除外したいです
530デフォルトの名無しさん
2018/06/24(日) 17:16:44.02ID:1DBcJ9cD \b[0-9]{13}\b
とか
(?<![0-9])[0-9]{13}(?![0-9])
とか
携帯だから試してない
とか
(?<![0-9])[0-9]{13}(?![0-9])
とか
携帯だから試してない
531530
2018/06/24(日) 20:41:43.34ID:LPLL+qJx 先頭と末尾も考慮すると
https://regex101.com/r/xT760t/2
(?:(?<=[^0-9])|^)[0-9]{13}(?:(?=[^0-9])|$)
ただかなりバックトラックするから性能は悪い
どうせチェックディジット確認するなら13桁以上で全抽出して桁数チェック追加した方がマシに見える
https://regex101.com/r/xT760t/4
[0-9]{13,}
https://regex101.com/r/xT760t/2
(?:(?<=[^0-9])|^)[0-9]{13}(?:(?=[^0-9])|$)
ただかなりバックトラックするから性能は悪い
どうせチェックディジット確認するなら13桁以上で全抽出して桁数チェック追加した方がマシに見える
https://regex101.com/r/xT760t/4
[0-9]{13,}
532デフォルトの名無しさん
2018/06/24(日) 23:39:40.09ID:chBT6m1a 結構、難しい
A <13桁の数字> B
A の部分が、文字列の先頭か、数字以外で、
B の部分が、文字列の末尾か、数字以外
A <13桁の数字> B
A の部分が、文字列の先頭か、数字以外で、
B の部分が、文字列の末尾か、数字以外
533デフォルトの名無しさん
2018/06/25(月) 07:16:09.30ID:HTnjHonA 文字列操作可能なら両端に数字以外の文字を付加して
[^0-9][0-9]{13}[^0-9]
かな
[^0-9][0-9]{13}[^0-9]
かな
534デフォルトの名無しさん
2018/06/25(月) 08:32:20.35ID:g3low2hV535デフォルトの名無しさん
2018/06/25(月) 09:21:19.58ID:9/L2g6Oc >>534
せやな, 否定前後読みならそのままでよかったわ(肯定で試しちゃった)
ただどのみちバックトラック多くて無駄だから正規表現だけでやるのでなければ13桁以上でマッチングして桁数判定入れるべきだと思う
せやな, 否定前後読みならそのままでよかったわ(肯定で試しちゃった)
ただどのみちバックトラック多くて無駄だから正規表現だけでやるのでなければ13桁以上でマッチングして桁数判定入れるべきだと思う
536デフォルトの名無しさん
2018/06/25(月) 21:12:44.36ID:lRi8bnr9 13桁を超えていても候補として受け取っておいて
チェックデジットの計算の手前で落とします。
どうもありがとうございました。
チェックデジットの計算の手前で落とします。
どうもありがとうございました。
537デフォルトの名無しさん
2018/06/26(火) 18:51:05.99ID:PFtq6YS9 文字列の先頭の文字以外を*に変換する
というのはどう書けばいいでしょうか?
というのはどう書けばいいでしょうか?
538デフォルトの名無しさん
2018/06/26(火) 20:16:27.74ID:IMFKH44M こういうこと?
$perl -pe 's/(?!^)./*/g'
alpha
a****
beta
b***
gamma
g****
$
良い方法かどうかはわからないが。
$perl -pe 's/(?!^)./*/g'
alpha
a****
beta
b***
gamma
g****
$
良い方法かどうかはわからないが。
539デフォルトの名無しさん
2018/06/26(火) 20:22:51.32ID:IMFKH44M perl -pe 's/(?<!^)./*/g'
とすべきだったかな。
とすべきだったかな。
540デフォルトの名無しさん
2018/07/04(水) 22:06:49.23ID:gFgZc5FG J1Q
541デフォルトの名無しさん
2018/07/05(木) 16:31:37.58ID:AeL6VB/V J1Q
542デフォルトの名無しさん
2018/07/16(月) 14:08:24.67ID:80hpbb9v 1 2 3 の3つの文字を、順番不同で、必ず各々、1つ以上含む
a23b1 → 真
1a2 → 偽
これは順番の組み合わせだから、正規表現で出来ますか?
a23b1 → 真
1a2 → 偽
これは順番の組み合わせだから、正規表現で出来ますか?
543デフォルトの名無しさん
2018/07/16(月) 14:41:45.67ID:/+vnEc6c544デフォルトの名無しさん
2018/07/25(水) 19:56:10.60ID:1XdhMp/e サクラエディタで
<>で囲まれていないaaaをあああにしたいです
<aaab>aaa<caaadaaa>baaadeaaa<ccc>baaad<baaa>aaabaaadaaa<ee>
↓
<aaab>あああ<caaadaaa>bあああdeあああ<ccc>bあああd<baaa>あああbあああdあああ<ee>
>([^<>a]*?)(aaa)([^<>a]*?)<
>$1あああ$2<
だと「>aaa<」や「>baaad<」は置換できるけど「>baaadeaaa<」や「>aaabaaadaaa<」が置換できずに残る
そこで
>([^<>a]*?)(aaa)([^<>a]*?)(aaa)([^<>a]*?)<
>$1あああ$2あああ$3<
と変換するわけですが当然「>aaabaaadaaa<」が残り…
<>に囲まれていないaaaが沢山あるので変換しきれません
何とかならないでしょうか
<>で囲まれていないaaaをあああにしたいです
<aaab>aaa<caaadaaa>baaadeaaa<ccc>baaad<baaa>aaabaaadaaa<ee>
↓
<aaab>あああ<caaadaaa>bあああdeあああ<ccc>bあああd<baaa>あああbあああdあああ<ee>
>([^<>a]*?)(aaa)([^<>a]*?)<
>$1あああ$2<
だと「>aaa<」や「>baaad<」は置換できるけど「>baaadeaaa<」や「>aaabaaadaaa<」が置換できずに残る
そこで
>([^<>a]*?)(aaa)([^<>a]*?)(aaa)([^<>a]*?)<
>$1あああ$2あああ$3<
と変換するわけですが当然「>aaabaaadaaa<」が残り…
<>に囲まれていないaaaが沢山あるので変換しきれません
何とかならないでしょうか
545デフォルトの名無しさん
2018/07/25(水) 20:31:56.63ID:AmPlbSPQ []内のa取っ払って
ぜんぶ変換できるまで何回もやったら?
(>[^<]*?)aaa([^>]*?<)
ぜんぶ変換できるまで何回もやったら?
(>[^<]*?)aaa([^>]*?<)
546デフォルトの名無しさん
2018/07/25(水) 20:46:43.74ID:AmPlbSPQ aaa(?=[^>]*<)
前後に必ずタグがあるならこれなら一回
前後に必ずタグがあるならこれなら一回
547デフォルトの名無しさん
2018/07/26(木) 09:15:37.25ID:4NbdqkDU548デフォルトの名無しさん
2018/07/29(日) 09:53:04.64ID:JxpitKP8 ●
パターン1, (\d+)月(\d+)日
パターン2, (\d+)月(\d+)数字以外(\d+)日
これを一回で取得したい
●対象データ
7月1日
7月2〜4日
7月6から10日
7月12・13日
●希望する結果
7,1
7,2,4
7,6,10
7,12,13
お願いします
パターン1, (\d+)月(\d+)日
パターン2, (\d+)月(\d+)数字以外(\d+)日
これを一回で取得したい
●対象データ
7月1日
7月2〜4日
7月6から10日
7月12・13日
●希望する結果
7,1
7,2,4
7,6,10
7,12,13
お願いします
549デフォルトの名無しさん
2018/07/29(日) 10:18:20.53ID:kCYuy8BN 取得って何だよ変数に入ればいいのか置換結果として取得したいのか
550デフォルトの名無しさん
2018/07/29(日) 10:49:28.56ID:TzC7zb5n551デフォルトの名無しさん
2018/07/29(日) 10:59:44.43ID:JxpitKP8 取り出すだけでいいです。
552デフォルトの名無しさん
2018/07/29(日) 11:42:16.30ID:kCYuy8BN 数字取り出して変数に入れるだけなら /(\d+)月(\d+)(?:\D+(\d+))?日/gu で仕舞いだが
553デフォルトの名無しさん
2018/07/29(日) 11:45:23.47ID:JxpitKP8554デフォルトの名無しさん
2018/07/29(日) 11:49:24.17ID:kCYuy8BN 変数にキャプチャしたいのか置換で取り出したいのかくらい書こうな
555デフォルトの名無しさん
2018/07/29(日) 11:57:08.75ID:JxpitKP8 失礼しました
556デフォルトの名無しさん
2018/08/12(日) 20:55:52.79ID:MOc1ccj1 C#で正規表現を使ってHTML内から文字コードをとってきたいのですが
以下の場合だと"UTF"としか取得できません。
"UTF-8"と取得する場合どうすればいいでしょうか?
<[^>]*\bcharset\s*=\s*[""']?(?<charset>\w+)\b
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
以下の場合だと"UTF"としか取得できません。
"UTF-8"と取得する場合どうすればいいでしょうか?
<[^>]*\bcharset\s*=\s*[""']?(?<charset>\w+)\b
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
557デフォルトの名無しさん
2018/08/12(日) 21:30:40.27ID:mMH07JtW >>556
HTMLは扱いが難しいからパーサ使った方がいい
どうしても正規表現だというなら,
1. とりあえず的な修正
https://regex101.com/r/sIUmzD/2
/<[^>]*\bcharset\s*=\s*(?:([^\s"'=><`]+)|'([^']*)'|"([^"]*)")\b/$1$2$3/i
2. もう少し気合の入れた修正
https://regex101.com/r/sIUmzD/1
|<meta
(?:\s+[^\s"'>/=]+(?:\s*=\s*(?:[^\s"'=><`]+|'[^']*'|"[^"]*"))?)*
(?:\s+charset(?:\s*=\s*(?:([^\s"'=><`]+)|'([^']*)'|"([^"]*)"))?)
(?:\s+[^\s"'>/=]+(?:\s*=\s*(?:[^\s"'=><`]+|'[^']*'|"[^"]*"))?)*\s*/?>|$1$2$3|i
ぐらいか
でもこれ後で読むのしんどいでしょ
HTMLは扱いが難しいからパーサ使った方がいい
どうしても正規表現だというなら,
1. とりあえず的な修正
https://regex101.com/r/sIUmzD/2
/<[^>]*\bcharset\s*=\s*(?:([^\s"'=><`]+)|'([^']*)'|"([^"]*)")\b/$1$2$3/i
2. もう少し気合の入れた修正
https://regex101.com/r/sIUmzD/1
|<meta
(?:\s+[^\s"'>/=]+(?:\s*=\s*(?:[^\s"'=><`]+|'[^']*'|"[^"]*"))?)*
(?:\s+charset(?:\s*=\s*(?:([^\s"'=><`]+)|'([^']*)'|"([^"]*)"))?)
(?:\s+[^\s"'>/=]+(?:\s*=\s*(?:[^\s"'=><`]+|'[^']*'|"[^"]*"))?)*\s*/?>|$1$2$3|i
ぐらいか
でもこれ後で読むのしんどいでしょ
558デフォルトの名無しさん
2018/08/12(日) 21:47:08.19ID:L571MbNB >>557
神だ
神だ
559557
2018/08/12(日) 21:53:09.85ID:mMH07JtW 2.の方を若干修正, charsetには値が必要ですわ
https://regex101.com/r/sIUmzD/3
|<meta
(?:\s+[^\s"'>/=]+(?:\s*=\s*(?:[^\s"'=><`]+|'[^']*'|"[^"]*"))?)*
(?:\s+charset\s*=\s*(?:([^\s"'=><`]+)|'([^']*)'|"([^"]*)"))
(?:\s+[^\s"'>/=]+(?:\s*=\s*(?:[^\s"'=><`]+|'[^']*'|"[^"]*"))?)*\s*/?>|$1$2$3|i
https://regex101.com/r/sIUmzD/3
|<meta
(?:\s+[^\s"'>/=]+(?:\s*=\s*(?:[^\s"'=><`]+|'[^']*'|"[^"]*"))?)*
(?:\s+charset\s*=\s*(?:([^\s"'=><`]+)|'([^']*)'|"([^"]*)"))
(?:\s+[^\s"'>/=]+(?:\s*=\s*(?:[^\s"'=><`]+|'[^']*'|"[^"]*"))?)*\s*/?>|$1$2$3|i
560デフォルトの名無しさん
2018/08/12(日) 22:00:37.17ID:MOc1ccj1 >>557
ありがとうございます!
当方がやりたかったことは、HTMLをテキストデータとして大量に取得して、その中から特定のワードでの絞り込みです。
正しい文字コードでHTMLを落としてからパースしようと思ったのですが、確かにパーサでやる手もありそうですね
正規表現は今まで避けてきたので、読むのがシンドイっていうかチンプンカンプンですが
求めていた動作です。とても助かりました。
使わせてももらいます。ありがとうございました。
ありがとうございます!
当方がやりたかったことは、HTMLをテキストデータとして大量に取得して、その中から特定のワードでの絞り込みです。
正しい文字コードでHTMLを落としてからパースしようと思ったのですが、確かにパーサでやる手もありそうですね
正規表現は今まで避けてきたので、読むのがシンドイっていうかチンプンカンプンですが
求めていた動作です。とても助かりました。
使わせてももらいます。ありがとうございました。
561デフォルトの名無しさん
2018/08/12(日) 23:56:24.69ID:2UQfVx23 HTML のように、要素に親子関係があるもの・構造化されたものは、正規表現じゃ無理
<1><x></x><y></y></1>
開き・閉じタグで、前から一致させると、
<1></x> が対応してしまう
ネストも無限にできるから、対応させるのは無理。
パーサを使うべき
<1><x></x><y></y></1>
開き・閉じタグで、前から一致させると、
<1></x> が対応してしまう
ネストも無限にできるから、対応させるのは無理。
パーサを使うべき
562デフォルトの名無しさん
2018/08/13(月) 00:16:51.60ID:06GD6VnQ キーワードと構成次第だろ
563デフォルトの名無しさん
2018/08/13(月) 00:22:13.35ID:LXDaPxOa rubyキチやぞ
564デフォルトの名無しさん
2018/08/13(月) 03:34:58.19ID:EnLsbSTB >>561
一部の環境では括弧等のネスト構造を取り扱いをサポートした正規表現があるよ
PCRE(Perl 5.10以降)やruby(鬼雲)、Python,PHPなどでも
C#の.NET Framework環境でもあったんじゃないかな
一部の環境では括弧等のネスト構造を取り扱いをサポートした正規表現があるよ
PCRE(Perl 5.10以降)やruby(鬼雲)、Python,PHPなどでも
C#の.NET Framework環境でもあったんじゃないかな
565デフォルトの名無しさん
2018/08/23(木) 19:11:59.52ID:4kav5HXR .*
何にでもマッチさせることができる最強で万能な正規表現
何にでもマッチさせることができる最強で万能な正規表現
566デフォルトの名無しさん
2018/08/23(木) 19:26:33.22ID:FR6Db0Vc 改行にはマッチしないけどね
[\s\S]*
[\s\S]*
567デフォルトの名無しさん
2018/08/24(金) 02:29:36.02ID:cgE41D9D568デフォルトの名無しさん
2018/08/24(金) 03:56:55.93ID:k/tOxHF9 >>567
鬼雲使ってみれば?
鬼雲使ってみれば?
569デフォルトの名無しさん
2018/08/24(金) 10:28:37.49ID:bF2ATmvV BNF使えよ
570デフォルトの名無しさん
2018/08/24(金) 10:38:07.25ID:wb3Q/jKx なんか知識が数年前で止まっちゃってる人がちらほらいるな
正規表現がネストに対応したのなんてもう一昔前ってイメージだけど
正規表現がネストに対応したのなんてもう一昔前ってイメージだけど
571デフォルトの名無しさん
2018/08/24(金) 12:46:08.34ID:srP6ovAZ 別に正規表現だけを追いかけてるわけじゃないから
572デフォルトの名無しさん
2018/08/24(金) 12:48:35.65ID:ZVlysGry なんでも正規表現で済まそうとするひとって
意地でもVBA使い続けてるひとと大差ない
意地でもVBA使い続けてるひとと大差ない
573デフォルトの名無しさん
2018/08/24(金) 12:49:36.87ID:yKVFr0CJ 適材適所
574デフォルトの名無しさん
2018/08/24(金) 16:58:29.09ID:k/tOxHF9575デフォルトの名無しさん
2018/08/24(金) 18:58:08.09ID:wb3Q/jKx576デフォルトの名無しさん
2018/08/25(土) 00:03:35.46ID:r5O9PJUC はいはい、正規表現マスターすごいねー
これでいいかな w
これでいいかな w
577デフォルトの名無しさん
2018/08/25(土) 00:35:41.84ID:I7tIpqHO 底辺に行くほど知識自慢はしかたがないだろ、正規表現に限らず
ただ掲示板的に質問したいのにバカがしゃしゃり出てきて迷惑だよな
ただ掲示板的に質問したいのにバカがしゃしゃり出てきて迷惑だよな
578デフォルトの名無しさん
2018/08/25(土) 10:52:22.58ID:J+b/MRtJ 的確な指示されても気に入らない回答だからと人の話を聴かない人は成長しないよ
自分の気に入る回答しかも自分と同じレベルの回答もらって喜んでればいい
自分の気に入る回答しかも自分と同じレベルの回答もらって喜んでればいい
579デフォルトの名無しさん
2018/08/26(日) 15:08:37.66ID:sCPJIsfv 俺なんか中学の勉強もロクにしなかったのに正規表現を理解したいから
今、大学レベルの数学を勉強してる・・なかなか進まないけどね・・
>>556 の質問からパーサとか出てくるのはちょっと違うと思うよ
metaタグ拾えばいいだけだよね?難しく考えすぎだよ
あとHTMLソースのほうが糞で実際の文字コードとmetaタグで指定されてる
文字コードが違うなんてことや、文字コードの指定が複数個所あるなんていう
2ページ分のHTMLをそのままくっ付けましたなんていうのも稀にあるから
そういう糞なHTMLを相手にする場合は対応を考えないといけないね
今、大学レベルの数学を勉強してる・・なかなか進まないけどね・・
>>556 の質問からパーサとか出てくるのはちょっと違うと思うよ
metaタグ拾えばいいだけだよね?難しく考えすぎだよ
あとHTMLソースのほうが糞で実際の文字コードとmetaタグで指定されてる
文字コードが違うなんてことや、文字コードの指定が複数個所あるなんていう
2ページ分のHTMLをそのままくっ付けましたなんていうのも稀にあるから
そういう糞なHTMLを相手にする場合は対応を考えないといけないね
580デフォルトの名無しさん
2018/08/26(日) 15:31:19.41ID:CE5Lnwmj >>579じゃあmetaタグを拾って来る正規表現をどうぞ
581デフォルトの名無しさん
2018/08/26(日) 15:37:54.94ID:zPuf2RGr え? そんなことマジで聞いてるのか?
582デフォルトの名無しさん
2018/08/26(日) 15:40:08.95ID:CE5Lnwmj マジだからちゃんと教えてくれよ
583デフォルトの名無しさん
2018/08/26(日) 18:08:41.45ID:sCPJIsfv 自分用に作るならこんな感じかなぁ、動作確認してないので使わないでね
|
<meta (?=\s) [^<>]* \s charset \s* = \s* (?:["']\s*)? ([^\s"'<>;]+)
|x;
こういうのは想定外 ※ " " の中に > がある
<meta comment="a>b" charset="UTF-8">
|
<meta (?=\s) [^<>]* \s charset \s* = \s* (?:["']\s*)? ([^\s"'<>;]+)
|x;
こういうのは想定外 ※ " " の中に > がある
<meta comment="a>b" charset="UTF-8">
584デフォルトの名無しさん
2018/08/26(日) 18:17:10.61ID:O4hA/SKg585デフォルトの名無しさん
2018/08/26(日) 18:36:53.61ID:sCPJIsfv586デフォルトの名無しさん
2018/08/26(日) 18:37:23.43ID:5oVMxLBv mataタグでのcharsetは定型的でしか使われないんで、仕様的に色々な場合に対応するのは無駄
俺が使うなら、こんなので十分
/<meta[^>]*\scharset=(["'])((?:(?!\1).)+)/i
俺が使うなら、こんなので十分
/<meta[^>]*\scharset=(["'])((?:(?!\1).)+)/i
587デフォルトの名無しさん
2018/08/26(日) 18:52:21.33ID:sCPJIsfv ほとんどの場合はそれで充分だろうねw
588デフォルトの名無しさん
2018/08/27(月) 04:46:33.83ID:2QlJLeh2589デフォルトの名無しさん
2018/08/29(水) 16:43:59.44ID:4UnjToZE こんなバカが回答者してたのか
過去レス見ると前から張り付いてるようだね
過去レス見ると前から張り付いてるようだね
590デフォルトの名無しさん
2018/08/31(金) 20:05:36.75ID:5NewXZva591デフォルトの名無しさん
2018/08/31(金) 21:09:12.34ID:5NewXZva bregonig.dll 2017/01/17 Ver.4.10 非包含オペレータに対応
うーん、非包含にマッチする正規表現はいつか自分で作れるように
なりたいと思ってたけど内部で勝手に作ってくれる時代になってしまったか〜
自分の知識は2013あたりで止まってるから浦島だ
うーん、非包含にマッチする正規表現はいつか自分で作れるように
なりたいと思ってたけど内部で勝手に作ってくれる時代になってしまったか〜
自分の知識は2013あたりで止まってるから浦島だ
592デフォルトの名無しさん
2018/09/01(土) 01:28:06.31ID:0IlLcsWm593デフォルトの名無しさん
2018/09/01(土) 22:17:13.09ID:0IlLcsWm (?~abc)
これは↓とまったく同じ動作になると言って良さそう
(?:(?!abc).)*(?:(?=abc).{1,2})?
否定したい文字列が固定長なら先読みで書き換え可能らしい
これは↓とまったく同じ動作になると言って良さそう
(?:(?!abc).)*(?:(?=abc).{1,2})?
否定したい文字列が固定長なら先読みで書き換え可能らしい
594デフォルトの名無しさん
2018/09/12(水) 19:47:12.85ID:j29ToL0A 正規表現を言語化できるようなとこ知りませんか?
/^ab/
これを入れると、
↓
「abで始まる」
と変換されるようなサービスって無いでしょうか?
/^ab/
これを入れると、
↓
「abで始まる」
と変換されるようなサービスって無いでしょうか?
595デフォルトの名無しさん
2018/09/13(木) 09:47:15.83ID:l9KSlvFS せっかく正規表現にした意味が無い
596デフォルトの名無しさん
2018/09/13(木) 09:50:19.09ID:NoauaeTl https://jex.im/regulex/#!flags=&re=%5Eab
597デフォルトの名無しさん
2018/09/13(木) 13:28:20.78ID:a9m+mGXQ 視覚的に見れるサイトじゃなくて視覚的に作れるサイトがあったら便利かな
メタ文字を覚える必要が無くなるし動作を把握しながら作れる
そういうのが普及したらいいね
メタ文字を覚える必要が無くなるし動作を把握しながら作れる
そういうのが普及したらいいね
598デフォルトの名無しさん
2018/09/14(金) 00:35:39.11ID:qC9qAPWt そういうのとはちょっと違う&grepツールになっちゃうけど
TresGrepってのが入力欄でのマウス右クリックから正規表現を指定出来たり
正規表現1文字入力ごとにエラーチェック⇒NGならエラーメッセージを表示したりと
ちょっと便利
TresGrepってのが入力欄でのマウス右クリックから正規表現を指定出来たり
正規表現1文字入力ごとにエラーチェック⇒NGならエラーメッセージを表示したりと
ちょっと便利
599デフォルトの名無しさん
2018/09/14(金) 06:51:39.20ID:LTbXVNEK600デフォルトの名無しさん
2018/09/14(金) 14:14:58.44ID:grBP2MzP TresGrep使ってみたけど良くできてる
正規表現に何かしらの思い入れがあるのが分かる気がする
特に正規表現の複数行入力が出来るのはいい
自分は複数行入力が当たり前になるべきだと前から考えていて
それが実装されててちょっと感動してしまった
正規表現に何かしらの思い入れがあるのが分かる気がする
特に正規表現の複数行入力が出来るのはいい
自分は複数行入力が当たり前になるべきだと前から考えていて
それが実装されててちょっと感動してしまった
601デフォルトの名無しさん
2018/09/17(月) 12:06:03.62ID:SR+usNFF C#、System.Text.RegularExpressions.Regexの正規表現で
xxの中を取り出すにはどうしたらいいのでしょう?
ただし取り出したいのはトップのxxで、xxが閉じる前にyyがあるときはそのxxは無視という条件付きです
対象文字列 "<xx><xx><yy>111</yy></xx></xx><xx>222</xx><xx>333</xx>";
試した正規表現 @"<xx>.*?[^(</yy>)]</xx>"
結果
<xx><xx><yy>111</yy></xx></xx><xx>222</xx>
<xx>333</xx>
欲しい結果
<xx><xx><yy>111</yy></xx></xx>
<xx>222</xx>
<xx>333</xx>
xxの中を取り出すにはどうしたらいいのでしょう?
ただし取り出したいのはトップのxxで、xxが閉じる前にyyがあるときはそのxxは無視という条件付きです
対象文字列 "<xx><xx><yy>111</yy></xx></xx><xx>222</xx><xx>333</xx>";
試した正規表現 @"<xx>.*?[^(</yy>)]</xx>"
結果
<xx><xx><yy>111</yy></xx></xx><xx>222</xx>
<xx>333</xx>
欲しい結果
<xx><xx><yy>111</yy></xx></xx>
<xx>222</xx>
<xx>333</xx>
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 「厚かましい挑発的発言だ」中国国連大使が高市首相発言に強く反発 日本の常任理事国入りに明確に反対 [ぐれ★]
- 中国側が首相答弁の撤回要求、日本側拒否★6 [夜のけいちゃん★]
- 解体ごみ約2.3トンを山に不法投棄か トルコ国籍解体工を逮捕 埼玉 [どどん★]
- 債券・円・株「トリプル安」に…長期金利1.755%まで上昇、円は対ユーロで史上最安値 ★3 [蚤の市★]
- 自民、経済対策で子ども1人に2万円給付へ 児童手当に上乗せ 所要額は約4000億円 [ぐれ★]
- 【漫画】『週刊少年サンデー』連載中の漫画家、前編集者に怒り! 入稿遅れ、無断のセリフ変更など暴露 「心の糸が切れて」 [冬月記者★]
- 愛国者「高市総理が威勢よく吠えてなければこんな事態にはなってないって話に変わってるけど、元はといえばこいつがきっかけだからね?」 [856698234]
- 【悲報】高市早苗さん、たった一人で日本を崩壊へ導く [714769305]
- 【悲報】「やったー!こだわりまくった洋館仕立ての家を建てたぞ!」➡「「離婚したんで住まずに売ります……」 [158478931]
- 安倍祖父(東大)安倍父(東大)、安倍晋三(成蹊大)→なぜなのか? [832215575]
- 精神する時の🏡
- 【悲報】数年後ジャップ「足らぬ足らぬは工夫が足らぬ😤」 [616817505]
