[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 02/26 17:48 / Filesize : 330 KB / Number-of Response : 1037
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Regular Expression(正規表現) Part14



1 名前:デフォルトの名無しさん [2017/03/15(水) 02:04:35.47 ID:e01p03UP.net]
Regular Expressionスレです。

質問する場合は必ず実装言語や処理系ソフトウェア名を示してください。

前スレ
Regular Expression(正規表現) Part13
echo.2ch.net/test/read.cgi/tech/1415149975/


次スレは>>980宜しく
天ぷら等2以降

520 名前:デフォルトの名無しさん mailto:sage [2018/05/14(月) 07:31:45.21 ID:0PI4I4+g.net]
JavaScriptによる正規表現チェッカー

くっそ長いので短縮
https://goo. gl/CE3aZ8

https://fatiherikli.github.io/fil/#eyJwYXRoIjoiSmF2YVNjcmlwdFRlc3QxLmpzIiwic291cmNlIjoiLyog5q2j6KaP6KG
o54++44Oe44OD44OB44OG44K544OIICovXG5cbi8vIOato+imj+ihqOePvlxudmFyIHJlID0gbmV3

521 名前:IFJlZ0V4cCgv
XFxkKy9nKTtcblxuLy8g44OG44Kt44K544OIXG52YXIgdGV4dCA9IChmdW5jdGlvbiAoKSB7LypcbmFhYVxuYmIx
MmJcbmM1NjdjYzg5XG4qL30pLnRvU3RyaW5nKCkuc3BsaXQoL1xcbi8pLnNsaWNlKDEsLTEpO1xuXG5jb25zb2x
lLmxvZyhcIlJlZ0V4cDpcIiwgcmUudG9TdHJpbmcoKSlcbmNvbnNvbGUubG9nKFwiVGV4dDpcIiwgdGV4dCk7XG5c
bnRleHQuZm9yRWFjaChmdW5jdGlvbihsaW5lKSB7XG4gICAgY29uc29sZS5sb2coXCJsaW5lOlwiLCBsaW5lKTtcbiA
gICB2YXIgcmVzdWx0ID0gbGluZS5tYXRjaChyZSk7XG4gICAgaWYocmVzdWx0KVxuICAgICAgICBjb25zb2xlLmxv
ZyhcInJlc3VsdDpcIiwgcmVzdWx0KTtcbiAgICBlbHNlXG4gICAgICAgIGNvbnNvbGUubG9nKFwicmVzdWx0OlwiLCBcIm51bGxcIik7XG59KVxuIn0
[]
[ここ壊れてます]

522 名前:デフォルトの名無しさん mailto:sage [2018/05/15(火) 21:31:31.85 ID:xchMEgzc.net]
ちょっと修正
https://goo. gl/M2Fn68

523 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 02:57:37.83 ID:F73VBvr9.net]
Linuxに触れるまで正規表現に方言があるなんて知らなかった
基本正規表現だの拡張正規表現だの
vimの置換で悩んでたら原因がエスケープの有無が原因とかもうね
ある程度は使えるが先読みとか後読みとか僅かでも深入りすると余計に混乱する

524 名前:デフォルトの名無しさん mailto:sage [2018/05/19(土) 11:08:45.44 ID:rxs2hai/.net]
小さい世界で囲い込まれてれば楽だよな
ただし何かの拍子ではみ出した時に世界の広さを知って己の無力さを痛感する
よくあるパターン

525 名前:デフォルトの名無しさん [2018/05/23(水) 19:28:29.89 ID:Au5e7VGg.net]
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

QBPEH

526 名前:デフォルトの名無しさん mailto:sage [2018/05/24(木) 10:47:44.54 ID:cPlRxlDn.net]
QBPEH

527 名前:デフォルトの名無しさん mailto:sage [2018/05/25(金) 13:52:01.06 ID:X/Hngdv+.net]
HTMLの解析を正規表現でやりたいのですが

<a href="xxxxx"><img src="yyyyy" /></a>

という風に、<a> で括られた img の src だけを抽出したいんですけど
どうしたらいいのでしょう。

<a> で括られてない

<img src="yyyyy" />

は除外したいのです。

528 名前:デフォルトの名無しさん mailto:sage [2018/05/25(金) 13:53:08.12 ID:X/Hngdv+.net]
あ、すみません

<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> 以外のゴミも入ってきます。
※ゴミは無視したい



529 名前:デフォルトの名無しさん mailto:sage [2018/05/25(金) 14:10:36.40 ID:dgrSTrid.net]
>>514
^<a\b.+<img src="([^"]+)".+</a>$

$1

530 名前:デフォルトの名無しさん mailto:sage [2018/05/25(金) 16:20:05.07 ID:fgSfMucA.net]
>>515
<a href=""></a><img src="1.jpg"><a href=""></a>

531 名前:デフォルトの名無しさん mailto:sage [2018/05/25(金) 20:00:28.32 ID:OUvr9ihJ.net]
頑張ってみてもこの程度が限界
https://regex101.com/r/VYrYNO/1

で, >>513がHTMLの解析を正規表現だけでやる理由は何だ?
Pythonのhtml.parser, RubyのNokogiri, PHPならGoutter, それ以外の言語でも間違いなくHTMLパーサは誰かしら作ってる
そんな中で何故正規表現だけで?ぶっちゃけこういう用途には向いてない, というかHTMLの構文規則は正規言語を超えるんだけど, 分かってる?

532 名前:デフォルトの名無しさん mailto:sage [2018/05/25(金) 20:29:09.95 ID:rhJz1xPv.net]
パーサかましてXPathで

533 名前:必要な情報だけ抜くのが基本だしな
どうしても使えないっていう理由があるなら仕方ないけど
[]
[ここ壊れてます]

534 名前:デフォルトの名無しさん mailto:sage [2018/05/25(金) 21:21:37.93 ID:lQiYp+1p.net]
鬼雲限定
<a (?~</a>)<img src="([^"]+)"[^>]*>(?~<a )</a>

535 名前:デフォルトの名無しさん [2018/05/25(金) 22:28:52.14 ID:Cqv+6nk2.net]
■変更前
004a34
A521n2
785b66

■変更後
0049934
99521992
7859966
----------------------

数値以外を99に置換したいです
お願いします

536 名前:デフォルトの名無しさん mailto:sage [2018/05/25(金) 23:31:17.71 ID:gd/oxjVv.net]
木構造のものは、正規表現じゃ無理

1< 2< abc 3> 4>

2<からの最短マッチで、対応する3>を取れるけど、
1<からの最短マッチで、対応する4>を取れない。
3>にマッチしてしまうから

1< 2< 3< abc 4> 5> 6>

これでも、2<と5>をマッチさせられない。
最長・最短マッチでも、マッチしない

CSS セレクターを使う、jQuery, RubyのNokogiri などを使え。
これらの使い方は、ほぼ同じ

537 名前:デフォルトの名無しさん mailto:sage [2018/05/25(金) 23:43:29.83 ID:OUvr9ihJ.net]
>>520
数値以外と簡単に言うが改行文字や空白等の扱いはどうするんだ
変換対象文字をちゃんと明示しないと

/[^0-9]/99/g

こんなもんが欲しいわけではあるまい
とりあえずASCII印字可能文字に限るなら

/[\x21-\x2F\x40-\x7E]/99/g

だが当然マルチバイト文字は対象外

538 名前:デフォルトの名無しさん mailto:sage [2018/05/25(金) 23:44:35.69 ID:OUvr9ihJ.net]
\x40じゃなくて\x3Aだわ



539 名前:デフォルトの名無しさん mailto:sage [2018/05/26(土) 10:42:28.41 ID:oqQZJpqn.net]
>>519
非包含オペレータか

540 名前:デフォルトの名無しさん mailto:sage [2018/05/26(土) 17:59:00.22 ID:xbMfHZm2.net]
>>521
再帰を使えば、対応する括弧のネスト対応ぐらいならできるらしいよ(鬼雲、PCRE)
<([^<>]++|(?R))*>
   # [^<>]++は(?>[^<>]+)としてもよい(どっちもバックトラックしないと思う)
   # (?R)は、(?0)とも書ける
   # (<([^<>]++|(?1))*>)

\g<-n>を使ってもできる(鬼雲だけ?)
(<(?:\g<-1>|[^<>])*>)
   # \g<-1>は(?-1)とも書ける
   # ここでは\g<-1>を先に書いたが上と同じく後ろに書いても同じ

541 名前:デフォルトの名無しさん mailto:sage [2018/05/26(土) 19:07:35.21 ID:vUfk79H6.net]
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>)

542 名前:デフォルトの名無しさん mailto:sage [2018/05/26(土) 19:08:54.60 ID:vUfk79H6.net]
アップデートするの忘れてたわ

https://regex101.com/r/VYrYNO/2

543 名前:デフォルトの名無しさん mailto:sage [2018/06/23(土) 01:47:09.94 ID:19kQ7FFf.net]
のりこめー
【IT】プログラマーが正規表現を使いこなすメリットとは?
https://egg.5ch.net/test/read.cgi/bizplus/1527843649/

544 名前:デフォルトの名無しさん mailto:sage [2018/06/24(日) 13:33:59.68 ID:wSHpLaLO.net]
文字列の中から数字13桁(それ未満でも超えてもNG)を抽出するにはどうしたらいいでしょう
JANコードらしきを抜き取りたいのです。

候補を抽出してから後でチェックデジット計算しますので
数字13桁のみで大丈夫です。

545 名前:デフォルトの名無しさん [2018/06/24(日) 15:06:08.45 ID:F1zD07yq.net]
数字40桁くらい連続してたらどうする?

546 名前:デフォルトの名無しさん mailto:sage [2018/06/24(日) 16:56:18.47 ID:wSHpLaLO.net]
40桁はJANコードじゃないので除外したいです

547 名前:デフォルトの名無しさん mailto:sage [2018/06/24(日) 17:16:44.02 ID:1DBcJ9cD.net]
\b[0-9]{13}\b
とか
(?<![0-9])[0-9]{13}(?![0-9])
とか

携帯だから試してない

548 名前:530 mailto:sage [2018/06/24(日) 20:41:43.34 ID:LPLL+qJx.net]
先頭と末尾も考慮すると
https://regex101.com/r/xT760t/2



549 名前:
(?:(?<=[^0-9])|^)[0-9]{13}(?:(?=[^0-9])|$)

ただかなりバックトラックするから性能は悪い
どうせチェックディジット確認するなら13桁以上で全抽出して桁数チェック追加した方がマシに見える

https://regex101.com/r/xT760t/4
[0-9]{13,}
[]
[ここ壊れてます]

550 名前:デフォルトの名無しさん mailto:sage [2018/06/24(日) 23:39:40.09 ID:chBT6m1a.net]
結構、難しい

A <13桁の数字> B

A の部分が、文字列の先頭か、数字以外で、
B の部分が、文字列の末尾か、数字以外

551 名前:デフォルトの名無しさん mailto:sage [2018/06/25(月) 07:16:09.30 ID:HTnjHonA.net]
文字列操作可能なら両端に数字以外の文字を付加して
[^0-9][0-9]{13}[^0-9]
かな

552 名前:デフォルトの名無しさん [2018/06/25(月) 08:32:20.35 ID:g3low2hV.net]
>>533
先読み後読みは先頭や末尾にも一致するからそういうのは無駄
>>532の二つ目で完成している

553 名前:デフォルトの名無しさん mailto:sage [2018/06/25(月) 09:21:19.58 ID:9/L2g6Oc.net]
>>536
せやな, 否定前後読みならそのままでよかったわ(肯定で試しちゃった)
ただどのみちバックトラック多くて無駄だから正規表現だけでやるのでなければ13桁以上でマッチングして桁数判定入れるべきだと思う

554 名前:デフォルトの名無しさん mailto:sage [2018/06/25(月) 21:12:44.36 ID:lRi8bnr9.net]
13桁を超えていても候補として受け取っておいて
チェックデジットの計算の手前で落とします。

どうもありがとうございました。

555 名前:デフォルトの名無しさん mailto:sage [2018/06/26(火) 18:51:05.99 ID:PFtq6YS9.net]
文字列の先頭の文字以外を*に変換する
というのはどう書けばいいでしょうか?

556 名前:デフォルトの名無しさん [2018/06/26(火) 20:16:27.74 ID:IMFKH44M.net]
こういうこと?

$perl -pe 's/(?!^)./*/g'
alpha
a****
beta
b***
gamma
g****
$

良い方法かどうかはわからないが。

557 名前:デフォルトの名無しさん [2018/06/26(火) 20:22:51.32 ID:IMFKH44M.net]
perl -pe 's/(?<!^)./*/g'
とすべきだったかな。

558 名前:デフォルトの名無しさん [2018/07/04(水) 22:06:49.23 ID:gFgZc5FG.net]
J1Q



559 名前:デフォルトの名無しさん mailto:sage [2018/07/05(木) 16:31:37.58 ID:AeL6VB/V.net]
J1Q

560 名前:デフォルトの名無しさん [2018/07/16(月) 14:08:24.67 ID:80hpbb9v.net]
1 2 3 の3つの文字を、順番不同で、必ず各々、1つ以上含む

a23b1 → 真
1a2 → 偽

これは順番の組み合わせだから、正規表現で出来ますか?

561 名前:デフォルトの名無しさん [2018/07/16(月) 14:41:45.67 ID:/+vnEc6c.net]
>>544
先読みが使えれば

^(?=.*1)(?=.*2)(?=.*3)

562 名前:デフォルトの名無しさん [2018/07/25(水) 19:56:10.60 ID:1XdhMp/e.net]
サクラエディタで
<>で囲まれていない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が沢山あるので変換しきれません
何とかならないでしょうか

563 名前:デフォルトの名無しさん mailto:sage [2018/07/25(水) 20:31:56.63 ID:AmPlbSPQ.net]
[]内のa取っ払って
ぜんぶ変換できるまで何回もやったら?

(>[^<]*?)aaa([^>]*?<)

564 名前:デフォルトの名無しさん mailto:sage [2018/07/25(水) 20:46:43.74 ID:AmPlbSPQ.net]
aaa(?=[^>]*<)
前後に必ずタグがあるならこれなら一回

565 名前:デフォルトの名無しさん [2018/07/26(木) 09:15:37.25 ID:4NbdqkDU.net]
>>547>>548
できた!できました!
ありがとうございます

566 名前:デフォルトの名無しさん mailto:sage [2018/07/29(日) 09:53:04.64 ID:JxpitKP8.net]

パターン1, (\d+)月(\d+)日
パターン2, (\d+)月(\d+)数字以外(\d+)日
これを一回で取得したい

●対象データ
7月1日
7月2〜4日
7月6から10日
7月12・13日

●希望する結果
7,1
7,2,4

567 名前:
7,6,10
7,12,13

お願いします
[]
[ここ壊れてます]

568 名前:デフォルトの名無しさん mailto:sage [2018/07/29(日) 10:18:20.53 ID:kCYuy8BN.net]
取得って何だよ変数に入ればいいのか置換結果として取得したいのか



569 名前:デフォルトの名無しさん mailto:sage [2018/07/29(日) 10:49:28.56 ID:TzC7zb5n.net]
>>550
ほんまにそれが希望する結果?
数字とりだしてるだけなんだけど。

570 名前:デフォルトの名無しさん mailto:sage [2018/07/29(日) 10:59:44.43 ID:JxpitKP8.net]
取り出すだけでいいです。

571 名前:デフォルトの名無しさん mailto:sage [2018/07/29(日) 11:42:16.30 ID:kCYuy8BN.net]
数字取り出して変数に入れるだけなら /(\d+)月(\d+)(?:\D+(\d+))?日/gu で仕舞いだが

572 名前:デフォルトの名無しさん mailto:sage [2018/07/29(日) 11:45:23.47 ID:JxpitKP8.net]
>>554
完璧です。
ありがとうございました。

573 名前:デフォルトの名無しさん mailto:sage [2018/07/29(日) 11:49:24.17 ID:kCYuy8BN.net]
変数にキャプチャしたいのか置換で取り出したいのかくらい書こうな

574 名前:デフォルトの名無しさん mailto:sage [2018/07/29(日) 11:57:08.75 ID:JxpitKP8.net]
失礼しました

575 名前:デフォルトの名無しさん mailto:sage [2018/08/12(日) 20:55:52.79 ID:MOc1ccj1.net]
C#で正規表現を使ってHTML内から文字コードをとってきたいのですが
以下の場合だと"UTF"としか取得できません。
"UTF-8"と取得する場合どうすればいいでしょうか?

<[^>]*\bcharset\s*=\s*[""']?(?<charset>\w+)\b


<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">

576 名前:デフォルトの名無しさん mailto:sage [2018/08/12(日) 21:30:40.27 ID:mMH07JtW.net]
>>558
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

ぐらいか
でもこれ後で読むのしんどいでしょ

577 名前:デフォルトの名無しさん mailto:sage [2018/08/12(日) 21:47:08.19 ID:L571MbNB.net]
>>559
神だ

578 名前:557 mailto:sage [2018/08/12(日) 21:53:09.85 ID:mMH07JtW.net]
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



579 名前:デフォルトの名無しさん mailto:sage [2018/08/12(日) 22:00:37.17 ID:MOc1ccj1.net]
>>559
ありがとうございます!
当方がやりたかったことは、HTMLをテキストデータとして大量に取得して、その中から特定のワードでの絞り込みです。
正しい文字コードでHTMLを落としてからパースしようと思ったのですが、確かにパーサでやる手もありそうですね

正規表現は今まで避けてきたので、読むのがシンドイっていうかチンプンカンプンですが
求めていた動作です。とても助かりました。
使わせてももらいます。ありがとうございました。

580 名前:デフォルトの名無しさん mailto:sage [2018/08/12(日) 23:56:24.69 ID:2UQfVx23.net]
HTML のように、要素に親子関係があるもの・構造化されたものは、正規表現じゃ無理

<1><x></x><y></y></1>

開き・閉じタグで、前から一致させると、
<1></x> が対応してしまう

ネストも無限にできるから、対応させるのは無理。
パーサを使うべき

581 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 00:16:51.60 ID:06GD6VnQ.net]
キーワードと構成次第だろ

582 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 00:22:13.35 ID:LXDaPxOa.net]
rubyキチやぞ

583 名前:デフォルトの名無しさん mailto:sage [2018/08/13(月) 03:34:58.19 ID:EnLsbSTB.net]
>>563
一部の環境では括弧等のネスト構造を取り扱いをサポートした正規表現があるよ
PCRE(Perl 5.10以降)やruby(鬼雲)、Python,PHPなどでも
C#の.NET Framework環境でもあったんじゃないかな

584 名前:デフォルトの名無しさん mailto:sage [2018/08/23(木) 19:11:59.52 ID:4kav5HXR.net]
.*
何にでもマッチさせることができる最強で万能な正規表現

585 名前:デフォルトの名無しさん mailto:sage [2018/08/23(木) 19:26:33.22 ID:FR6Db0Vc.net]
改行にはマッチしないけどね
[\s\S]*

586 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 02:29:36.02 ID:cgE41D9D.net]
>>563
> HTML のように、要素に親子関係があるもの・構造化されたものは、正規表現じゃ無理

そういうこともできるように拡張した正規表現があればいいのに
さらに階層、treeも可

587 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 03:56:55.93 ID:k/tOxHF9.net]
>>569
鬼雲使ってみれば?

588 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 10:28:37.49 ID:bF2ATmvV.net]
BNF使えよ



589 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 10:38:07.25 ID:wb3Q/jKx.net]
なんか知識が数年前で止まっちゃってる人がちらほらいるな
正規表現がネストに対応したのなんてもう一昔前ってイメージだけど

590 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 12:46:08.34 ID:srP6ovAZ.net]
別に正規表現だけを追いかけてるわけじゃないから

591 名前:デフォルトの名無しさん [2018/08/24(金) 12:48:35.65 ID:ZVlysGry.net]
なんでも正規表現で済まそうとするひとって
意地でもVBA使い続けてるひとと大差ない

592 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 12:49:36.87 ID:yKVFr0CJ.net]
適材適所

593 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 16:58:29.09 ID:k/tOxHF9.net]
>>569
てか>>563には>>566のレスが既に付いてたじゃんか

594 名前:デフォルトの名無しさん mailto:sage [2018/08/24(金) 18:58:08.09 ID:wb3Q/jKx.net]
>>574
賢い人程手段をたくさん知り
その中から取捨選択するからな

>>573
さすがに勉強不足すぎだろw
何年前で知識止まってんだよ

595 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 00:03:35.46 ID:r5O9PJUC.net]
はいはい、正規表現マスターすごいねー

これでいいかな w

596 名前:デフォルトの名無しさん mailto:sage [2018/08/25(土) 00:35:41.84 ID:I7tIpqHO.net]
底辺に行くほど知識自慢はしかたがないだろ、正規表現に限らず

ただ掲示板的に質問したいのにバカがしゃしゃり出てきて迷惑だよな

597 名前:デフォルトの名無しさん [2018/08/25(土) 10:52:22.58 ID:J+b/MRtJ.net]
的確な指示されても気に入らない回答だからと人の話を聴かない人は成長しないよ
自分の気に入る回答しかも自分と同じレベルの回答もらって喜んでればいい

598 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 15:08:37.66 ID:sCPJIsfv.net]
俺なんか中学の勉強もロクにしなかったのに正規表現を理解したいから
今、大学レベルの数学を勉強してる・・なかなか進まないけどね・・

>>558 の質問からパーサとか出てくるのはちょっと違うと思うよ
metaタグ拾えばいいだけだよね?難しく考えすぎだよ

あとHTMLソースのほうが糞で実際の文字コードとmetaタグで指定されてる
文字コードが違うなんてことや、文字コードの指定が複数個所あるなんていう
2ページ分のHTMLをそのままくっ付けましたなんていうのも稀にあるから
そういう糞なHTMLを相手にする場合は対応を考えないといけないね



599 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 15:31:19.41 ID:CE5Lnwmj.net]
>>581じゃあmetaタグを拾って来る正規表現をどうぞ

600 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 15:37:54.94 ID:zPuf2RGr.net]
え? そんなことマジで聞いてるのか?

601 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 15:40:08.95 ID:CE5Lnwmj.net]
マジだからちゃんと教えてくれよ

602 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 18:08:41.45 ID:sCPJIsfv.net]
自分用に作るならこんな感じかなぁ、動作確認してないので使わないでね

|
<meta (?=\s) [^<>]* \s charset \s* = \s* (?:["']\s*)? ([^\s"'<>;]+)
|x;

こういうのは想定外  ※  " " の中に > がある

<meta comment="a>b" charset="UTF-8">

603 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 18:17:10.61 ID:O4hA/SKg.net]
>>585
俺が書いた糞(>>561)より糞なコードが書かれて驚く
素直にパーサ使えよ

604 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 18:36:53.61 ID:sCPJIsfv.net]
>>585 のほうがスマートなのは一目瞭然でしょ
ただ >>585 は こんな感じ 程度のものなのでツッコミ所があっても知らないよ

605 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 18:37:23.43 ID:5oVMxLBv.net]
mataタグでのcharsetは定型的でしか使われないんで、仕様的に色々な場合に対応するのは無駄
俺が使うなら、こんなので十分
/<meta[^>]*\scharset=(["'])((?:(?!\1).)+)/i

606 名前:デフォルトの名無しさん mailto:sage [2018/08/26(日) 18:52:21.33 ID:sCPJIsfv.net]
ほとんどの場合はそれで充分だろうねw

607 名前:デフォルトの名無しさん mailto:sage [2018/08/27(月) 04:46:33.83 ID:2QlJLeh2.net]
マッチングテスト

[1] <meta charset="UTF-8">
>>559 1. 失敗
>>561   マッチ
>>585   マッチ
>>588   マッチ

[2] このスレのHTML
557 1. マッチ
559   失敗
583   マッチ
586   失敗

608 名前:デフォルトの名無しさん mailto:sage [2018/08/29(水) 16:43:59.44 ID:4UnjToZE.net]
こんなバカが回答者してたのか
過去レス見ると前から張り付いてるようだね



609 名前:デフォルトの名無しさん mailto:sage [2018/08/31(金) 20:05:36.75 ID:5NewXZva.net]
なかなか興味深い

鬼雲に非包含オペレータを実装した話
https://qiita.com/k-takata/items/4e45121081c83d3d5bfd

610 名前:デフォルトの名無しさん mailto:sage [2018/08/31(金) 21:09:12.34 ID:5NewXZva.net]
bregonig.dll 2017/01/17 Ver.4.10 非包含オペレータに対応

うーん、非包含にマッチする正規表現はいつか自分で作れるように
なりたいと思ってたけど内部で勝手に作ってくれる時代になってしまったか〜

自分の知識は2013あたりで止まってるから浦島だ

611 名前:デフォルトの名無しさん mailto:sage [2018/09/01(土) 01:28:06.31 ID:0IlLcsWm.net]
ab(?~ba)ba

これを

ab((?!ba).)*ba

この従来通りの方式をベースに記述して、かつ、前者とまったく同じ
動作に書き直すことは可能かな?

両者の違いについては>>592のリンク参照

612 名前:デフォルトの名無しさん mailto:sage [2018/09/01(土) 22:17:13.09 ID:0IlLcsWm.net]
(?~abc)
これは↓とまったく同じ動作になると言って良さそう
(?:(?!abc).)*(?:(?=abc).{1,2})?

否定したい文字列が固定長なら先読みで書き換え可能らしい

613 名前:デフォルトの名無しさん mailto:sage [2018/09/12(水) 19:47:12.85 ID:j29ToL0A.net]
正規表現を言語化できるようなとこ知りませんか?

/^ab/
これを入れると、

「abで始まる」
と変換されるようなサービスって無いでしょうか?

614 名前:デフォルトの名無しさん [2018/09/13(木) 09:47:15.83 ID:l9KSlvFS.net]
せっかく正規表現にした意味が無い

615 名前:デフォルトの名無しさん mailto:sage [2018/09/13(木) 09:50:19.09 ID:NoauaeTl.net]
https://jex.im/regulex/#!flags=&re=%5Eab

616 名前:デフォルトの名無しさん mailto:sage [2018/09/13(木) 13:28:20.78 ID:a9m+mGXQ.net]
視覚的に見れるサイトじゃなくて視覚的に作れるサイトがあったら便利かな
メタ文字を覚える必要が無くなるし動作を把握しながら作れる
そういうのが普及したらいいね

617 名前:デフォルトの名無しさん mailto:sage [2018/09/14(金) 00:35:39.11 ID:qC9qAPWt.net]
そういうのとはちょっと違う&grepツールになっちゃうけど
TresGrepってのが入力欄でのマウス右クリックから正規表現を指定出来たり
正規表現1文字入力ごとにエラーチェック⇒NGならエラーメッセージを表示したりと
ちょっと便利

618 名前:デフォルトの名無しさん mailto:sage [2018/09/14(金) 06:51:39.20 ID:LTbXVNEK.net]
>>598
これいいですね。
ありがとうございます。



619 名前:デフォルトの名無しさん mailto:sage [2018/09/14(金) 14:14:58.44 ID:grBP2MzP.net]
TresGrep使ってみたけど良くできてる
正規表現に何かしらの思い入れがあるのが分かる気がする

特に正規表現の複数行入力が出来るのはいい
自分は複数行入力が当たり前になるべきだと前から考えていて
それが実装されててちょっと感動してしまった

620 名前:デフォルトの名無しさん mailto:sage [2018/09/17(月) 12:06:03.62 ID:SR+usNFF.net]
C#、System.Text.RegularExpressions.Regexの正規表現で

xxの中を取り出すにはどうしたらいいのでしょう?
ただし取り出したいのはトップのxxで、xxが閉じる前にyyがあるときはそのxxは無視という条件付きです

対象文字列 "<xx><xx><yy>111</yy></xx></xx><xx>223</xx><xx>334</xx>";
試した正規表現 @"<xx>.*?[^(</yy>)]</xx>"

結果
 <xx><xx><yy>111</yy></xx></xx><xx>223</xx>
 <xx>334</xx>

欲しい結果
 <xx><xx><yy>111</yy></xx></xx>
 <xx>223</xx>
 <xx>334</xx>






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<330KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef