TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼
くだすれPython(超初心者用) その44【Ruby禁止】
Visual Studio 2017 Part6
HSP総合スレ【part 10】 [無断転載禁止](c)2ch.net
今までみた絶望的なソースコード
Java低速GUI Swing 10
Windows 10 UWPアプリ開発 Part 2
[RPA]PC自動化技術総合スレ[効率化] Part.8
インデントを強制しても綺麗なコードにはなりません
【Intel】OpenCV総合スレ 5画素目【画像処理】
センター試験: 数学IIBのプログラムについて語るスレ part3

Regular Expression(正規表現) Part15


1 :2019/09/16 〜 最終レス :2020/05/29
Regular Expressionスレです。

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

前スレ
Regular Expression(正規表現) Part14
https://mevius.2ch.sc/test/read.cgi/tech/1489511075/


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

2 :
スルーされにくい質問のテンプレと例

●Regular Expressionの使用環境
Java1.5

●検索か置換か?
検索

●説明
各行の1番目のAまでを検索したい

●対象データ
ABCA
BCAA
CABA

●希望する結果
ABCA
^
BCAA
^^^
CABA
^^

※ ^ はアンダーラインだそうな ^^;

3 :
◆関連サイト
正規表現メモ
http://www.kt.rim.or.jp/~kbk/regex/regex.html
Perl正規表現雑技
http://www.din.or.jp/~ohzaki/regex.htm

詳説 正規表現
http://www.oreilly.co.jp/books/9784873113593/
正規表現クックブック
http://www.oreilly.co.jp/books/9784873114507/

正規表現プログラミングFAQ
http://capslockabcjp.kitunebi.com/faq.html

.NET Framework の正規表現 | Microsoft Docs
https://docs.microsoft.com/ja-jp/dotnet/standard/base-types/regular-expressions
正規表現 - JavaScript | MDN
https://developer.mozilla.org/ja/docs/Web/JavaScript/Guide/Regular_Expressions

鬼車
http://www.geocities.jp/kosako3/oniguruma/index_ja.html
鬼雲
https://github.com/k-takata/Onigmo
Boost.Regex 1.45.0 (日本語訳)
http://alpha.sourceforge.jp/devel/boost.regex_ja_1_45_0.pdf

秀丸: 複数行にまたがる検索について
http://homepage2.nifty.com/jr-kun/hidemaru_qa/4_regulr.html#RETURNS

サクラエディタ: 改行
http://d.hatena.ne.jp/myokoym/20101219/1292779058
※ サクラエディタでは複数行に渡る検索・置換は出来ません。

4 :
正規表現技術入門
https://gihyo.jp/book/2015/978-4-7741-7270-5

↑の著者の一人であり Onigmo の作者でもあるtakata先生のツイ
https://twitter.com/k_takata
(deleted an unsolicited ad)

5 :
>>1-2


6 :
●Regular Expressionの使用環境 
サクラエディタ bregoning.dll ver 3.06という記載があります

●検索か置換か? 
置換

●説明 
うしろに数字を付けたい。


というのを
/(^.*)/$1/ で置き換えると

になります(変わらない)。
これを、あ→あ00にするために
/(^.*)/$100/ とはできません。

$1等の直後に、数字を付け足すためにはどのように
表現したらよいか教えてください。

元の行の末尾に付け足すとは限らないので、
$1(実際はもっと多いのですが・・)の直後に数字を付け足す方法をお教えください。

7 :
>>6
/(^.*)/${1}00/
https://sakura-editor.github.io/help/HLP000089.html

8 :
>>7
ありがとうございます。
ヘルプを見るという基本がなってませんでした
もうしわけありません。

9 :
正規表現クロスワードパズル。めっちゃおもろいww
https://regexcrossword.com/

10 :
解き方がわかんねぇ・・・

https://regexcrossword.com/challenges/beginner/puzzles/1

[^SPEAK]+
HE|LL|O+

が交わるマスがなんで、Hになるんだ

11 :
クロスワードの基本ルールと同様に各マス1文字だが、通常と異なり各ラインが単語になるとは限らない
縦のラインを横ラインをそれぞれ検索対象のテキストと見做して両方がマッチすればOK
ちなみに1回で1ライン全てにマッチする必要は無くて複数回検索して全マスにマッチする形でも良いみたい

12 :
>>10
まず
EP|IP|EF
の列を埋めてみよう。

13 :
>>11
>>12

ありがと。わかったわ。

>縦のラインを横ラインをそれぞれ検索対象のテキストと見做して両方がマッチすればOK

クロスワードって考え方がスポーンと抜けてた。
枠外にある正規表現を、「縦のヒント」「横のヒント」としてみなすわけね。

for i in A B C D E F G H I J K L M N O P Q R S T U V W X Y Z;
do echo $i | egrep "縦条件" | egrep "横条件" #縦横逆も可
done;

的な考え方をしてたわ・・・

14 :
全制覇した。疲れた。本来はもっとのんびり楽しむものだよな。

15 :
すげえ!高難易度のやつ歯が立たないわ

16 :
https://regexcrossword.com/playerpuzzles/59e565c95008d

これとか解けるのは人間ではないと思うわ

17 :
アカウント持ってないから login はできないけど
自分が解いた結果はまだ見られるな。
クッキーを削除したら見られなくなるんだろうか。

18 :
>>16
なんじゃこりゃwww
本末転倒だけどこれ数独ソルバーみたいにコンピューターに解かせられんの?

19 :
テキストエディタで試したら全27ラインマッチする状態になってるのに正解にならんなあ

20 :
どうもブラウザのせいだったようで、同じ内容を普段使ってないChromeで試したら正解扱いになった、よかった

作った人は凄いけど、解くのは1個1個できるところから埋め、条件を少しずつ絞りこんで行けば案外見た目ほど難しくはない
正規表現の可変長の書式の影響でクロスワードよりピクロスを解く感覚に似てる気がするのでその辺やってた人はちょっと有利かも
あと記憶力に余程の自身がなければ、ちょっと大きめに印刷して各マスに細かい条件を書きながらやったら大分楽になると思う

21 :
●Regular Expressionの使用環境
※テキスト(csv)を成型するという目的なので、なんでもいいです。
 フリー(ネットからDL可能)なものであれば環境を作ります。

●検索か置換か?
置換

●説明
csvファイルの第4フィールドに説明文的なものが入ってます。
ここに半角カンマが紛れています。これを全角文字(、)に置き換えたい。
第4フィールドにいくつカンマがあるかは不定です。(0の場合もあれば、2個、3個、場合によっては10個、それ以上など)
第4フィールド以外は種類は多いのですが特定の文字が入ります。また第4フィールド以外はカンマは入っていません。
各行のフィールド数は固定です。(実際は20フィールドあるのですが、省略のため5フィールドにしてます)

●対象データ
Field1,Field2,Field3,ここは説明文,Field5
Field1,Field2,Field3,説明文です,Field5
Field1,Field2,Field3,ここは説明文,ですよ,Field5
Field1,Field2,Field3,説明してる,フィールドですよ,Field5

●希望する結果
Field1,Field2,Field3,ここは説明文,Field5
Field1,Field2,Field3,説明文です,Field5
Field1,Field2,Field3,ここは説明文、ですよ,Field5
Field1,Field2,Field3,説明してる、フィールドですよ,Field5

よろしくお願いいたします。

22 :
3つ目の,以降から,field5までの間をキャプチャで良さそう。

23 :
>>21
perl -ne '($a,$b,$c)=m/^((?:[^,]+,){3})(.*[^,])((?:,[^,\n]+){1})$/; $b=~s/,/、/g; print "$a$b$c\n"' input.csv

先頭の三つはカンマの数を数えて取り出し
^((?:[^,]+,){3})
フィールド数は固定とのことなので末尾側もカンマの数で取り出せる
((?:,[^,\n]+){1})$
その間が置換対象
(.*[^,])

ということで数字(3 と 1)を調整すれば実際のデータにも適用できると思います

24 :
>>23
Python版
https://ideone.com/ApnsLv

25 :
質問を読んで直ぐにこれを書けるのなら速いけど
もし自分だったらあれをこうしてこれをこうしてと考えて試してる
間にテキストエディタとエクセルを行ったり来たりしながら
タブの挿入と置換と削除を繰り返した方が速いところが
悩ましいw

26 :
Ruby で、下のコードを、script.rb に書いて、
入力ファイル名を、input.csv とすると、

端末で、ruby script.rb input.csv と入力する。
つまり、ruby スクリプトファイル名 入力ファイル名

require 'csv'

# 引数はファイル名
CSV.filter( File.open( ARGV[ 0 ] ) ) do |row| # 1行ずつ処理する
row[ 3 ] = row[ 3 ].tr( ",", "、" ) # 列4
end

27 :
>>26
修正

tr ではなく、tr! で、直接レシーバー(文字列)を変更できる

>row[ 3 ] = row[ 3 ].tr( ",", "、" ) # 列4
row[ 3 ].tr!( ",", "、" ) # 列4

28 :
それ splice でできるんじゃね? と思ったのでやってみた。

perl -nF, -e 'splice( @F,3,0,join("、",splice( @F,3,@F-5+1))); print( join(",",@F));'

29 :
>>26
カンマでカラム分割してるからrow[3]にはカンマが含まれないよ

ARGF.each do |line|
line.match(/((?:.+?,){3})(.+)((?:,.+){1})/) do |match|
puts match[1] + match[2].gsub(",", "、") + match[3]
end
end

こういうのって力技で変換するよりも
CSV生成側でクウォートし直したほうがいいよね

30 :
手間をかけたくないなら、そんなフィールドは末尾に置くのが良い。
そうしておけば何を書こうと邪魔にならない。
いつかは手作業の限界を感じるかもしれないが、それを遅らせることはできる。

31 :
AIDS治療みたいなもんか

32 :
>>29
>>26 は、CSV モジュールを使っているから、
列をクォートする事で、列内に、カンマが存在できる!

入力ファイル
a,b,c,"あ,い,う",d

require 'csv'

# 引数は入力ファイル名
CSV.filter( File.open( ARGV[ 0 ] ) ) do |row| # 1行ずつ処理する
p row[ 3 ] #=> "あ,い,う"
row[ 3 ].tr!( ",", "、" ) # 列4
end

出力
a,b,c,あ、い、う,d

33 :
>>32
いやそりゃクウォートしてれば問題ないよ

a,b,c,あ,い,う,d

a,b,c,"あ,い,う",d

変換する処理が必要なわけで
そこができてないから困ってるんじゃないのかな

34 :
クォートしてなかったら、そもそも、CSV にならない!

列内に、カンマが含められないから、列数も変動する

35 :
それがわかってるから変形したいんじゃん。

36 :
バグのほとんどが設計段階で生じる、典型的な例かw

バグを設計段階で修正せず、実装段階で修正しようとするから、
ますますダメになるという例w

SE・上流工程が馬鹿だと、こういうのが多いw
Ruby などで実装した事がないからだろうw

ダメな事をやる香具師が、あまりにも多いw

37 :
なにこの人
要望・仕様を満たせないバグありのプログラムを書いておいて
それを指摘されたら「設計が悪い」と逆ギレしだしたよ
Ruby使う人ってこんなしょうもないおっさんに成り下がるのか

38 :
>>21
Vim
:%s/^\%([^,]*,\)\{3\}\zs\(.*\)\%(\%(,[^,\n]*\)\{1\}$\)\@=/\=substitute(submatch(0), ',', '、', 'g')/

Emacs
M-x query-replace-regexp
正規表現:
^\(\(?:[^,]*,\)\{3\}\)\(.*\)\(\(?:,[^,
]*\)\{1\}\)$
置換:
\1\,(replace-regexp-in-string "," "、" \2)\3

正規表現は>>23とほぼ同じだけど、空のフィールドに対応するよう + をすべて * に変更した
「第4フィールド」の内容がカンマだけの場合にも対応 (.*[^,]) → (.*)

39 :
>>16
お題スレの人が総当たりソルバー作ってくれた
https://mevius.2ch.sc/test/read.cgi/tech/1564310397/757

40 :
●Regular Expressionの使用環境
サクラエディタ bregoning.dll ver 4.12

●検索か置換か?
置換

●説明
をふくむ行(複数)を削除

●対象データ
A.jpg
B.jpg
C.jpg

●希望する結果
A.jpg

Bだけを削除するなら^.*B.*\nってわかるんですけど
B、Cを削除する方法がわかりません
誰か教えてください よろしくお願いします

41 :
>>40
いまいちやりたいことがはっきりしないが、
Aのみ残したなら、^[^AA].*?jpg¥n
BCのみ消したいなら、^[BC].*?jpg¥n

Aのみ全角なのは故意なのか?

42 :
を含む行を削除
でググればすぐに見付かるんだが

ttps://yanohirota.com/regex-delete-row/
キーワードを含む行(複数指定) ^.*(キーワード1|キーワード2).*$(\r\n|\r|\n)?

43 :
●Regular Expressionの使用環境
Mery
●検索か置換か?
置換
●説明
パターンにマッチする行までの全ての行をキャプチャしたい
●対象データ
20191001
吾輩は猫である
名前はまだ無い
……
20191002
親譲りの無鉄砲で
子供の頃から
損ばかりしている
……

●希望する結果
20191001[Tab]"吾輩は猫である
名前はまだ無い
……"
[改行]
20191002[Tab]"親譲りの無鉄砲で
子供の頃から
損ばかりしている
……"
日付と本文が交互に現れるテキストを日付と本文とに分けてキャプチャして置換したいのですが、上手く行きません。
最短一致を使用すると本文が一行しかキャプチャできないし、最長一致ですと最後の日付までの全行がキャプチャされてしまいます。
どうかご教示下さい。

44 :
>43

検索
(^[0-9]{8})\n

置換
\n$1\t

45 :
Ruby では、

text = <<"EOT"
20191001

20191002


EOT

# キャプチャー部分の、#{ $1 } は、8桁の数字
p res = text.gsub( /^(\d{8})\n/ ) { "\n#{ $1 }\t" }
print res

出力
[空行]
20191001[Tab]あ
[空行]
20191002[Tab]い


46 :
>>44
ご回答ありがとうございます。
すみません。本文部分を"で括りたくて、数字8桁に挟まれた部分にマッチさせたいのです。

47 :
>>46
CotEditorでドットが改行に一致する状態なら以下でできる
(^¥d{8})(.*(?=¥n¥d{8})|.*(?=$))

Meryは知らん

48 :
一応置換はこれ
$1¥t"$2"

49 :
(^\d{8})\n((?~^\d{8}))$
\1\t"\2"
最後の行が改行されてると"がズレるからそこだけ手作業

50 :
negative lookahead
https://regex101.com/r/DBWwcI/1

最下行に日付+改行を付け足せばORが一つ減って少し読みやすい
https://regex101.com/r/R3MQz7/1

51 :
>>43
^([0-9]{8})\n((?:(?!\n[0-9]{8}\n)[\S\s])+)

52 :
(?m)(^[0-9]{8}$)\n(.*?)(?=\n[0-9]{8}$|\Z)
(?m)(^[0-9]{8}$)\n(.*?)(?=\n[0-9]{8}$|\z)

$1\t"$2"

53 :
>>50
negative lookaheadとか書きつつ全然negativeじゃなかったわ

54 :
皆様ありがとうございます
最短一致と先読みを組み合わせて
(\d{8})((?:.*\n)*?)(?=\d{8})
のような感じでマッチしました
単に.*だけだと行末までで止まってしまうので明示的に.*\nの繰り返しと指定しないといけなかったようです

55 :
/(A|B*|C+|D?|E?|)+/ は /[A-E]*/ と同じなんだろうか。

56 :
=を含まない行を検索できる表現方法は?

57 :
>>56
^[^=]*$

58 :
PCRE2 Version 10.34 21-November-2019
https://www.pcre.org/

59 :
今でもアクティブに更新してるのってPCREの他はre2と鬼車系くらいなのかな
昔はライブラリの話も結構してた気がするけど

60 :
Hyperscan

61 :
テキストエディタで見えないけど何かがある状態
MacのBBEditだと逆さまの赤い「?」が表示される状態なんですけど
こういうのを正規表現で捕まえる事って出来ないですか?

62 :
否定で出来ない?

63 :
>>62
色々やってみたけど
非単語構成文字に含まれてしまい上手くこれだけ抽出出来ないです
一体こいつは何者なんだろう? もうちょい悩んでみます

64 :
そういうときはバイナリエディタで開いて該当部の文字コード引きなよ。

65 :
ありがとうです
\x{7F}
でいけました

66 :
ウムラウトなどのアクセント付きアルファベットにのみ一致させる正規表現をお教えください。

67 :
正規表現だけではまだできないんじゃないかな?

一般的には各言語が持ってるUnicodeの正規化機能を使って検索対象を基底文字+結合文字の形に正規化してから、結合文字を検索する

68 :
日本語なら、NKF というライブラリがあるように、
ウムラウトなら、その国のライブラリがあるかも知れない

知らないけど

まあ、日本人に聞いても、ムダだと思うw
使っている国の人に、聞いた方がよい

69 :
cpanライブラリの中に一般的な正規表現集めたものがあるから
その中にあるかもね

70 :
あるいは文字コードで標準ラテンのz(U+007A)よりあとを全て拾うように範囲指定するとか。

71 :
>>66
数は知れてるんだから普通に[ÄäÏï …]ってやればいいんじゃね?

72 :
サクラエディタの正規表現ライブラリbregonig with Onigmoの場合、大文字小文字区別なしでßや\x{00DF}がssにヒットするので困る。

73 :
>>71
見た目が同じäでも文字コードの表現は複数ある
文字の種類も含めてこれで全部といえる集合を作れるならそれでいける
日本語で濁音が含まれる文字にのみ一致させる正規表現を求めてるのと似てる

74 :
https://i.imgur.com/tclLTCk.png

75 :
[=a=]
equivalence class

76 :
●Regular Expressionの使用環境
鬼雲6.2.0 &Mery
●検索か置換か?
検索
●説明
行中の1個目の=にだけマッチさせたい
意味合いとしては
(?<=^[^=\n]+)=
なんだけど
>戻り読みの式は固定文字長でなければならない。
>しかし、最上位の選択子だけは異なった文字長が許される。
だそうで+はダメみたい
(?<=^(?~=))=
戻り読みの中に非包含もダメだった

(?<=^[^=\n]|^[^=\n]{2}|^[^=\n]{3}| .... |^[^=\n]{1000})=
とかすれば無理矢理出来そうだけどもっとスマートな書き方無いかな?

77 :
^.*?\K=

78 :
>>77
ありがとう
速っ。数日悩んであれこれ試してたのが嘘みたいなあっさり回答w
\Kとか意味分かってなかったけどこうやって使うんですね
重ね重ねありがとうございました

79 :
>>75
それだとウムラウトついてないのも引っかかるよね

80 :
\K
いいなそれと思ったけど自分の環境では使えなかった残念

81 :
>固定文字長で >最上位の選択子だけは異なった文字長
これはこういう意味かな
(?<=^[^=\n]{1,1000})=

82 :
鬼車のは (?<=ab|cd) だけじゃなく (?<=ab|cde) みたいなのも可ってことだったと思う

戻り読みを本当に後戻りしながらマッチングしてる実装ってほとんどなくて
大抵は文字列を一旦n文字分巻き戻して先読み相当の処理をするって感じになってるんで
パターンコンパイル時に「n文字分」が確定できない表現は弾かれる

83 :
グレップ坊や というソフト使ってますが
正規表現で、データだけ検索 データーを除外したい
どいう表記になりますか?

84 :
データを表現する正規表現が基本
除外については反転オプションないの?
本家 grep には -v で反転する

85 :
データ(?!ー)
データ(?=[^ー])
否定先読みか先読みが使えるならこれで出来る
独自のものだと適切なエスケープが必要かも
VB6ランタイム必要とあるからたぶんVBだろうけど

86 :
下のほうで行けました

87 :
●Regular Expressionの使用環境
sed-4.7-x64.exe
(Gnu sed4.7のwindows版 https://github.com/mbuilov/sed-windows)
Windows 8.1(64)のPowerShellで実行

●検索か置換か?
置換(削除)

●説明
行頭から6文字目を削除して、行頭から2文字目の後に一文字挿入したい
●対象データ
1229日 1400
1230月 1500
1231火 1500

●希望する結果
12/29日1400
12/30月1500
12/31火1500

sed.exe -e "s/(?<=^.{5})\s//" .\ファイル.txt
としたら6文字目のスペースが削除されるかと思ったけどうまくいかない
ファイルはUTF-8で改行はCRLFです

88 :
>>87
> うまくいかない
なぜどううまくいかないのかを書かないの?

89 :
何も削除されずに元のファイルがそのままです。
エラー表示等はないです。

90 :
^(.{2})(.{3}).(.*)$
$1/$2$3

91 :
sed -i ?

92 :
sed -E "s/^(..)(...)\s(.*)/\1\/\2\3/" .\ファイル.txt

93 :
●Regular Expressionの使用環境
正規表現の本・テキストで疑問に思った部分ですので特に環境は無いです 

●対象データ
太郎はテニス部のキャプテンです。
太郎はサッカー部のキャプテンです。
太郎は野球部のキャプテンです。
太郎はバスケ部のキャプテンです。

●検索か置換か?
検索

●希望する結果
太郎はテニス部のキャプテンです。
太郎はサッカー部のキャプテンです。
太郎は野球部のキャプテンです。

●説明
通常の 太郎は(テニス|野球|サッカー)部のキャプテンです では無く
バスケ という単語を使い正規表現を作りたいのです
()を使った場合(使わなくても バスケ を用いた方法であれば良い)
の否定文・除くの書き方がわかりません
^ を使っってみましたが上手く行きませでした

太郎は(^バスケ)部のキャプテンです。 ・・ダメ
太郎は^(バスケ)部のキャプテンです。 ・・ダメ  
太郎は(\^バスケ)部のキャプテンです。 ・・ダメ

バスケ を使った場合どの様に記述すれば良いのでしょうか?

94 :
否定は、(?!文字列)
でも、太郎は(?!バスケ)部の、とは書けないよ
「太郎は」に続く「バスケでない任意の1文字以上の文字列」部のキャプテンという風に考えてみてくれ

95 :
>>93
正規表現だけでは否定を完全実現できない。
だからこそ、例えばgrepには -vオプションがある。いずれのライブラリやアプリも正規表現とは別の方法で否定を実現している。

96 :
太郎は(?!バスケ).*部のキャプテンです。
太郎は(?!バスケ).*
(?!.*バスケ)太郎は.*部のキャプテンです。
(?!.*バスケ)太郎.*
(?!.*バスケ).*

97 :
鬼雲 非包含
^(?~バスケ|\n)$

98 :
太郎は(?!バスケ).*部のキャプテンです。
にて出来ましたが
(?!バスケ) の扱いを .* でさらに処理しなきゃいけないのは全く思いつかないです
今回のを参考に今後も学習してみます

皆様 >>94->>97 ありがとうございました

99 :
>>98
https://abicky.net/2010/05/30/135112/

100 :
^(?!.*バスケ)(?=.*キャプテン)(?=.*太郎).*

101 :
'あ'.match(/[あ゙い゙ゔえ゙お゙]/u)
(環境依存文字ですが、[]の中身は濁点つきの「あいうえお」です)
'あ'は濁点なしなのでマッチさせたくないのですがしてしまいます
これってマッチしないようにする方法はないですか?
JavaScriptです

102 :
>>101 自己解決しました
'あ'.match(/\u3099/u) //マッチしない
'あ゙'.match(/\u3099/u) //マッチする

103 :
^(?!.*バスケ(?!ット(?!ボール(?!選手)))).*
バスケ          ←不一致
バスケット        ←一致
バスケットボール    ←不一致
バスケットボール選手 ←一致
太郎はバスケットボール選手としてバスケ部に入部している ←不一致
太郎はバスケットボール選手としてバスケット部に入部している ←一致

104 :
んなことよりバスケやろうぜ

105 :
マッチしたカッコ内の文字列をを利用する方法ってどうやるんでしたか?
http://hogehoge.jp
http://(.*).jp
このアスタリスクの部分を利用するのはどうやるんでしたかね
t1ではないです

106 :
>>105
>>2
> スルーされにくい質問のテンプレと例
> ●Regular Expressionの使用環境

107 :
$1ですねどうも

108 :
同じ行にあるurlにhrefを加える正規表現はどうするのでしょうか

http://hoge1.jp http://hoge2.jp
↑これを
<a href="http://hoge1.jp">http://hoge1.jp</a> <a href="http://hoge2.jp">http://hoge2.jp</a>
こうしたいです

1つだけならこうできます
http://(.*).jp

109 :
http://$1.jp
を忘れていました

110 :
正規表現よりも、HTML パーサーの方がよい。
Ruby のnokogiri で、HTML をパースすると、
require 'nokogiri'
doc = Nokogiri::HTML(<<EOT)
<html><body>
<a href="http://hoge1.jp">http://hoge1.jp</a>
<a href="http://hoge2.jp">http://hoge2.jp</a>
</body></html>
EOT
elements = doc.css( "a" )
# 属性・テキスト
elements.each { |elem| puts elem.get_attribute( "href" ), elem.text }
出力
http://hoge1.jp
http://hoge1.jp
http://hoge2.jp
http://hoge2.jp

111 :
>>110

>>108はHTMLをパースしたいんじゃなく
HTMLの一部を生成したいんじゃろ

112 :
>>108
.jpが末尾につく行がリンクだと仮定してjavascript

/^(.+\.jp)$/gm

上記の正規表現で

<a hef=“http://$1”>http://$1</a>

正規表現のフラグのmで複数行対応、gで複数の結果で対応出来ん?

113 :
(https?://\S+)
<a href=“\1”>\1</a>

114 :
1) (hoge)
2) (hoge, fuga)
3) (hoge, fuga, piyo)
2) のみにマッチする正規表現のご教示よろしくお願いいたします
鬼雲

115 :
hogeとfugaを後で使うと仮定して
\((.+),(.+)\)

116 :
>>115
それだと3)にもマッチするよ

117 :
>>114
a\)

118 :
.を[^,]でどう?

119 :
ID:bUEb5r3d 様
ありがとうございました。m(_ _)m

「\([^,]*,[^,]*?\)」で希望動作になりました

120 :
どういたしまして。
ちなみに+じゃなくて*にしてるのは
(,)
にも一致させたいという事?
あと?は無くても動かん?

121 :
[^,]*だと改行と閉じ括弧を含んでしまい
次の行まで選択してしまうのでは?

122 :
確かにこんなデータも想定するとアウトやね

((hoge,huga)piyo)

改行はオプション次第だね

123 :
指定した2つの文字XYの間がn文字以下(0を含む)にマッチする検索方法教えてください

マッチ例n=3
XY
XaY
XabcY

NG
XabcdY

124 :
X.{0,3}Y
とかかな、試してないけど

125 :
>>124
ありがとうございます

126 :
●Regular Expressionの使用環境
実際に使う環境は不明ですが、まずはサクラエディタで試そうと思います。

●検索か置換か?
検索。マッチ部分を抽出できる必要はなく、含むかだけわかれば良いです。

●説明
文章(サクラは複数行NGとのことなので、今は1行)の中に「市」という文字が入っているかを判定したいです。
しかし、「横浜市」のような地名が入っているかを判定したいので、「巨大都市」「姉妹都市」のような特定のワードは排除したいです。
>>103の前後が逆のパターンになると思うのですが、単純に「^(?!.*(?!(?!巨大都|姉妹都)市)).*」とすると何もマッチしなくなってしまいます。
(そもそも「^(?!.*(?!ット(?!ボール))).*」の時点で「バスケット」にマッチしません)

●対象データ・希望する結果
ここは巨大都市だ
(マッチなし)
ここは横浜市だ
     ^
ここは巨大都市の横浜市だ
          ^

127 :
>>126
(?<!巨大都|姉妹都)市

Negative Lookbehindを使う
https://regex101.com/r/kP6luP/1

128 :
>>127
できました、ありがとうございます
後読みというのもあるんですね

129 :
どなたか教えてください。0が含まれる行のみ/以降を削除したいです。
(処理前)
2/3004
67//1
503/11/4
4/6/978
(処理後)
2
67//1
503
4/6/978
実際の文字列は数字とは限りません。可能かわかりませんがどうぞお願いします。

130 :
>>129
使用環境も書きましょう。
プログラミング言語かテキストエディタかでも大分違ってきますし。

スルーされにくい質問のテンプレと例

●Regular Expressionの使用環境
Java1.5

●検索か置換か?
検索

●説明
各行の1番目のAまでを検索したい

●対象データ
ABCA
BCAA
CABA

●希望する結果
ABCA
^
BCAA
^^^
CABA
^^

※ ^ はアンダーラインだそうな ^^;

131 :
^(?=.*0)([^/]*).*$
\1

132 :
>>131
すごい!完璧に希望どおりにできました!
アリガトウゴザイマス!!!

133 :
●Regular Expressionの使用環境
VisualWorks 7.7NC Regex11パーセル
●検索か置換か?
検索
●説明
jpgファイルの連番部分を取り出したい
なお正規表現にいくつか制約があります
先読みと後読みはできません (?= (?! (?<= (?<! などが未実装
最小一致も実装されていません
グループやキャプチャは可能です
'.*:^isDigit:(:isDigit:+)¥.(:isAlphabetic:+)$' asRegex. などとやっていましたが
これだと3333.jpgなどのパターンに対応できないので
'.*:^isDigit:?(:isDigit:+)¥.(:isAlphabetic:+)$' asRegex.
とやるとそもそもマッチしません
正規表現だけでやるうまい方法が見出せませんでした
isDigitは ¥d
isAlphabeticは [a-z] と読み替えできます
●対象データ
0000_1111_2222_3333.jpg
_0000_1111_2222_3333.jpg
3333.jpg
●希望する結果
3333
3333
3333

134 :
0000などは連番扱いされないの?

135 :
>>133
正規表現の方言がマイナー過ぎて難しい
:^isDigit: はPerl5でいう [^0-9] と等価という理解で合ってる?

136 :
ファイル名の最後の数字部分だけ取りたいなら (\d+).jpg とかじゃ駄目なん?

137 :
>>133
そもそも :^isDigit: の前に .*は必要?

138 :
>>134
その辺は捨てます
拡張子直前の数字だけを連番扱いです

>>135
それでいいです
書き方が変わってますが考え方は一緒です

>>137
ないとマッチしませんでした

139 :
>>136
試しましたがマッチしません

140 :
書き忘れましたが
ファイル名だけでなくファイルパスを含む場合があります・・

ex.
/a/b/c/d/_0000_1111_2222_3333.jpg

3333.jpgのようなパターンさえなければ対応できているのですが
これが来た場合にうまくいきません

141 :
>>139

>>136のだと
拡張子のピリオドがエスケープされてないから
(\d+)\.jpg
でキャプチャ箇所を抽出すればよいのでは?

142 :
>>141
エスケープ付けてテストしてあります

143 :
>>140
(/a/b/c/d/_0000_1111_2222_)?3333.jpg

144 :
>>143
マッチします

145 :
>>138
メソッドは何を使っているの
メソッドによって「文字列の先頭で一致する」とか
「文字列の任意の場所で一致する」とかあるでしょ
前者を使っているのでは?
後者なら>>136の類で上手く行くと思う

さもなくば ^(|.*:^isDigit:)(:isDigit:+)\.(:isAlphabetic:+)$ でどうかな

146 :
JavaScript なら、これで一致するので、
キャプチャー部分だけを取り出す

var re = /(\d+)\.jpg/g;

147 :
文字列の先頭からしかマッチできないんなら .*(\d+).jpg でいいんじゃね
ルールがローカルすぎてよくわからんが

148 :
>>133
>これだと3333.jpgなどのパターンに対応できない
ORでそのパターンをカバーしてやればいいよね

149 :
(.*[^\d])?(\d+)\.jpg

150 :
>>145
先頭からスキャンするメソッドしかないようです
試して見たところうまく行きそうなのでテストしています
あまり関係ないですがisDigitやisAlphabetic自体がメソッド名で
char.isDigit(); みたいに内部的に呼ばれています

>>147
それだと最長一致の関係で
3333のうち3だけ取り出されてしまいます

>>149
こちらもうまく行きそうです

後ほど結果ご報告致します

151 :
(.*[^\d])?(\d+)\.jpe?g
\2

152 :
一通り検査して全てパスできました
皆様ありがとうございました

それにしてもうまい方法があるものですね勉強になります・・

153 :
>>133を見て何が何だかだわ
皆さんスゲーな

154 :
VSCode なら、Regex Previewer という拡張機能がある

JavaScript, PHP の正規表現をテストできる

155 :
正規表現の段位、級位みたい試験があると転職に役立つかな
正規表現3段所持みたいな
試験問題はほとんどパズルだな
当方は頭悪いので、複数の単純な正規表現使用派

156 :
正規表現必須!てな現場もそうそう無いだろうし
使えて当たり前、だけど高度過ぎる常人に思い付けないようなものが必要になる場面もまず無いだろうし
そうなったら出来る奴に丸投げすりゃいいし
プログラム内なら全て正規表現任せにせずに前処理した方が良いケースも多々あるからそれ絡めてのスキルだと思うし
方言が多い事や解が複数あり得る事も試験化には問題
マークシート選択方式では引っ掛け問題ばかりになるだろうし何か違う気がする
資格化したところで精々、文系脳の奴がどれだけ論理思考が出来るか?の目安とか雑なIQ判定くらいにしか役立ちそうにない
義務教育内でこんなのあるよ程度に最低限くらいは教えておいて欲しいけど資格化までは疑問かな

157 :
>>156
君は正規表現の前に日本語の義務教育受けてこいw

158 :
日本語力に特段問題があるようには見えないが

159 :
俺もちゃんと何言ってるのか分かったし、特に読んでて疑問も覚えなかったね

160 :
文章がくどいとは思う

161 :
難題を解決したらあいつスゲーなとなるけど
なかなかその機会が訪れないよな

162 :
>>160
くどいというより接続詞で繋げすぎだね

163 :
論文とかの文章ならどうかと思うけど
こういう掲示板での改行の仕方とか含めての表現では
別に問題ないよなと思った

164 :
義務教育やり直せレベルにはみえない
雑文としては意味が通じないような文では無いだろう
157の日本語力が低杉なんじゃ?

165 :
>>161
パズルとしてはいいけど業務でやられると保守できなくなるしな

166 :
>>157フルボッコw
最初の方で「~し」を多用してるのがちょいウザいけど内容的にはまあ頷けるわな

167 :
>>161
そいつじゃないとできないっていう状況を会社は嫌がるからね
いつやめるかもわからんし
資産がゴミ化してしまうのを恐れる

168 :
そもそも問題が複雑だから複雑な正規表現になってしまうのでは?
そういう場合はそいつじゃないとできないという状況になってしまうこともありうる

169 :
うん、そういう場合もあると思うけど
多くの人はそもそも正規表現で解決出来るかもという発想がなくて
手間と時間をかけて頑張るか、その仕事を断る
そんな場合が多い気がする

170 :
まあbison/flex使って片付けてたらそれはやめてくれとも言われたこともあるしな
引き継げないだろと

171 :
>>168
一例として…

頑張れば1つにまとめられる
でも場合分けすればコードは長くなるし性能も劣化するけどわかりやすく書ける

って言うケースはそれなりにあると思うよ

172 :
頑張りすぎちゃって誰もメンテできないような手に負えないSQLってたまに出くわすけど、
それと同じような要領で頑張りすぎちゃって誰もメンテできないような正規表現が出てきたら・・・・
自分だったらSQLのときよりもさらに全力で逃げ出すかなあ

正規表現ってただでさえ魔法のような暗号文化しがちだし(後で読解に困ることも多いし)
仕様を簡潔明瞭にコードに落とし込むスキルがないダメプログラマが
力技で正規表現ゴリゴリ書くことを考えるとかなりの恐怖
エスアイアーの現場ならむしろ安全のため正規表現全面禁止にしておくほうがマシなんじゃなかろうか

173 :
三項演算子でも同じ問題あるね
可読性と簡潔性は必ずしも両立しない

174 :
仕様がわかっていれば
ちゃんとしたドキュメントが残っていれば何とでもなる
暗号をわかりやすいプログラムに変換可能だから
とりあえず動いているので触りたくないというのどうにもならない
それはそのプログラムが近い将来破綻することを意味する

175 :
>>172
正規表現は仕様の分かるテストケース一式を必ず用意させれば問題ない

つまり難しい正規表現を使いこなす能力よりも
もれなくテストケースを書ける能力のほうが大事

176 :
>>175
あーあーそれはなんか分かる・しっくり来るな。完全同意だわ。

177 :
>>175
でもそれって正規表現使っているか否かに関わらず本来なされているべきことだよね
正規表現とか特定の機能を使ってるところだけ特別扱いしてドキュメントやテスト仕様を残させるとか
絶対サボる人が出てきそう
でもってサボったところに限って誰も直せないようなクソコードと化すパターン

178 :
>>177
仕様の分かるテストケースってのはテストコードのことね
正規表現は作る時に必ずマッチする例とマッチしない例を書いて確認するでしょ?
それを仕様の分かるテストコードにしてセットで扱えるようにしておくってこと
コードレビュー時も正規表現だけ見てレビューしても効果薄いから
テストコードとセットでレビューする

>でもそれって正規表現使っているか否かに関わらず本来なされているべきことだよね
これはそうでもないよ
複雑なSQLの場合は仕様の分かるテストコードを一式用意するのは結構難しくて
ある範囲を超えると手間に見合わないから仕様書とSQL自体のレビューだったり手動テストで補完する
正規表現は純粋関数として扱えるのでその辺の難しさがない

179 :
足並み揃えないと不安で死んじゃう病

180 :
人っていついなくなるかわからないからね
事故だったり勝手な理由で辞めたり

181 :
●Regular Expressionの使用環境
grep (GNU grep) 2.20

●検索か置換か?
検索

●説明
今日から、14日間(位)を抜き出したい。

●対象データ
(前にもたくさん)
2020-03-14
2020-03-14
2020-03-15
2020-03-15
(中略)
2020-04-14
2020-04-14
2020-04-15
2020-04-15
(後も続く)

●希望する結果
14日前から2020-04-15を抽出できる事を希望します。
元ファイルに存在しない日付(3月33日があったり・・)などは無く、書式も必ず対象データに記載のもので出力されます。
また、30の月、31の月なども考慮しないでOKです。(できる限りシンプルな書式でお示しください)
サンプルお示しいただけたら、あとはググりながら自分で調べます。

ググったのですが、サンプルになるいい感じのシンプルな書式が見当たらず
どうにもうまく正規表現を作れずにおります。何卒宜しくお願い致します。

182 :
カレンダーは西向く侍があるから正規表現単独では無理では……

183 :
>>181
意味がよくわからんが、
任意の日付から14日前(後?)を抜き出すってことなら
正規表現よりはscriptの領域だろ。

184 :
>>182
大体でもできないでしょうか。
と書こうと思ったときに思いつきました。。。

実行速度に問題が出るかもしれませんが、
3月15日または、3月16日または、3月17日または・・・4月15日。

って力技でやってみます・・・。

もし、ほかにも「こういう方法があるよ」って素敵なアイデアお持ちのかた
いらっしゃいましたら、ぜひレスをください。宜しくお願い致します。

185 :
>>184
そもそも4/15から14日前で何で3月が入るんだよ。
間飛んでる可能性があるって事?
だとすればなおさら正規表現向きではない。

186 :
>>185
すみません、そこは書き間違えです。
awkってコマンドでできそうなので
もう少し調べてみます。

スレ汚し失礼いたしました。

187 :
>>186
3/15〜4/15限定での力技なら
2020(¥-03¥-(1[5-9]|2[0-9]|3[0-1])|¥-04¥-(0[1-9]|1[0-5]))

188 :
>>183
ありがとうございます。
scriptというのが大きなヒントになり解決に至りました。

結果的にはこれでできました。
cat 対象ログファイル | awk '"2020-04-01" <= $2 && $2 < "2020-04-02"'

性器表現ばっかりにとらわれてました・・
ありがとうございます。

189 :
何を言いたいのかエスパーでもわからん
オーダーはもっと正確に

190 :
>>181
ちょっとだけややこしい検索にはawkがおすすめ

191 :
性器表現って(i)みたいなのだろw

192 :
●Regular Expressionの使用環境
サクラエディタ

●検索か置換か?
置き換え

●説明
pingの結果(成功)をtxtに収めたものから、
IPアドレスだけ抜き取りたい

●対象データ
Echo reply 1 from 192.168.0.1 time delay 99.999 ms
Echo reply 2 from 192.168.0.1 time delay 88.999 ms
Echo reply 1 from 192.168.0.2 time delay 88.999 ms
Echo reply 2 from 192.168.0.2 time delay 88.999 ms
以下同じように続く

●希望する結果
192.168.0.1
192.168.0.1
192.168.0.2
192.168.0.2

〇実際に得られた結果
2.168.0.1
2.168.0.1
2.168.0.2
2.168.0.2

よろしくお願いいたします。

193 :
〇使用した正規表現(置換)
.*((([0-9]{1,3}\.){3})[0-9]{1,3}).*
$1

が抜けてました

194 :
今の奴を少し手直しして
.*\b(([0-9]{1,3}\.){3}[0-9]{1,3}).*
とか
.* (([0-9]{1,3}\.){3}[0-9]{1,3}).*

必ずfrom〜timeに挟まれるなら
.*from ([\d.]*) time.*
とか

195 :
>>193
とても意味がわかって書いているとは思えないが。
ログがそのパターンだけならこれでいけるでしょ。
¥d+¥.¥d+¥.¥d+¥.¥d+
頭が192.168.だけならそれで絞ってもいいし。

196 :
>>194
両方ばっちりうまくいきました。
ありがとうございます。
\dとか\bとかいろいろあるんですね。
\t位しか知りませんでした。
ありがとうございます。

197 :
.* を [^0-9]* もしくは \D*

198 :
推奨はしないけど、元の奴で、.*に?を追加して
.*?((([0-9]{1,3}\.){3})[0-9]{1,3}).*

199 :
ランダムな文字列によるコピペ荒らしで
12文字中の文字が最大で6種類しかない
ようなときどうすればいいでしょうか?
(.)\1*([^\1])\2*([^\1\2])\3*([^\1\2\3])\4*([^\1\2\3\4])\5*(
[^\1\2\3\4\5])\6 (.)\1*([^\1])\2*([^\1\2])\3*([^\1\2\3])\4*([^\1\2\3\4])\5*(
[^\1\2\3\4\5])\6*[\1\2\3\4\5\6]{6,}
こんな風にすると新たな種類の文字がキャプチャされていくように思えますが
既に登場した文字が再び登場するとマッチしなくなります

200 :
例を挙げると

↓慮↓鸞↑↓↓→慮↑←←↑→↑鸞↑→←→艪慮慮↑鸞鸞慮慮艪艪鸞→→↑慮↓→↓↓↑
慮鸞鸞艪艪→慮鸞艪鸞鸞↑慮艪慮艪慮↑←慮↑↑慮↑←艪→←鸞↑↓↑↑↓艪↓鸞慮→→
→艪←艪←↓↓←艪←↑→←←←鸞↓↓艪↑鸞←鸞←↓慮鸞←慮←慮↓慮慮慮慮↓↑艪
こんな感じの荒らしです
文字は毎回ランダムで変わります
登場する文字の種類が少ないという点でマッチさせたいと思っています

201 :
(.)\1*([^\1])[\1\2]*([^\1\2])[\1\2\3]*([^\1\2\3])[\1\2\3\4]*([^\1\2\3\4])[\1\2\3\4\5]*
こんな感じ?

202 :
>>201
試したらそれだとほぼ全ての文章にも当てはまるみたいです

203 :
^(.)+(?!\1)(.)(?:\1|\2)*(?!\1|\2)(.)(?:\1|\2|\3)*(?!\1|\2|\3)(.)(?:\1|\2|\3|\4)*
文字クラス中で後方参照使えないなら否定先読みで代替

204 :
訂正
試してなかった
^(.)\1*(?!\1)(.)(?:\1|\2)*(?!\1|\2)(.)(?:\1|\2|\3)*(?!\1|\2|\3)(.)(?:\1|\2|\3|\4)*

205 :
無理だと思ったけどなんかできたわ
6種類以下の文字だけで行の頭から20文字
(?m:^)(?=(.)\1*+(?>(.)(?>\1|\2)*+(?>(.)(?>\1|\2|\3)*+(?>(.)(?>\1|\2|\3|\4)*+(?>(.)(?>\1|\2|\3|\4|\5)*+(.)?+)?+)?+)?+)?+)(?>\1|\2|\3|\4|\5|\6){20}

206 :
>>203-205
ありがとうございます!
後方参照難しいですね…

207 :
言ってる通りの条件でやると滅茶苦茶誤爆して使い物にならんと思う
例が7文字だし、ググって類似の荒らしが使っているものにマッチしつつ誤爆控え目にするように
110字以上のレスの最後まで7字以下というくらいの条件にしたらこんな感じか

^ *(?=.{110})([^<br> ])(?:[<br> ]|\1)*([^<br> ])(?:[<br> ]|\1|\2)*([^<br> ])(?:[<br> ]|\1|\2|\3)*([^<br> ])(?:[<br> ]|\1|\2|\3|\4)*
【改行】([^<br> ])(?:[<br> ]|\1|\2|\3|\4|\5)*([^<br> ])(?:[<br> ]|\1|\2|\3|\4|\5|\6)*([^<br> ])(?:[<br> ]|\1|\2|\3|\4|\5|\6|\7)*$

【改行】とその前の改行を削除

208 :
別の判定要件にしないと誤爆頻発しそう...
例えば「特定コード範囲の文字が連続n回出現でNG」とかじゃダメなの?

209 :
>>208
確率的に連続しないケースが結構出ちゃいますよね

210 :
文字→文字または文字パターン、でどうだろう
そのボットの仕様を把握してないし実際のレスも見たことないのでなんとも言えないけど、文字種の制約以外に傾向を見いだせないってこと?

211 :
>>210
こんな感じ

東大医学部医学科卒業、3年連続国試不合格のルシファーさん、偏差値95.3を取った模試の成績表をTwitterのヘッダーにしてしまう
http://leia.2ch.sc/test/read.cgi/poverty/1589560323/
電光掲示板的なAAによって正規表現NGを逃れようとしている
今のところ
(\S{0,10}\s){10,}
(?=(.)\1*+(?>(.)(?>\1|\2)*+(?>(.)(?>\1|\2|\3)*+(?>(.)(?>\1|\2|\3|\4)*+(?>(.)(?>\1|\2|\3|\4|\5)*+(?>(.)(?>\1|\2|\3|\4|\5|\6)*+(?>(.)(?>\1|\2|\3|\4|\5|\6|\7)*+(?>(.)(?>\1|\2|\3|\4|\5|\6|\7|\8)*+(.)?+)?+)?+)?+)?+)?+)?+)?+)(?>\1|\2|\3|\4|\5|\6|\7|\8){17,}
で完璧に対応出来てる

212 :
17文字もあるのに文字種が8種以内って
自然言語としては有り得ないわけですよ
そのエントロピー的な性質をターゲットにしてる
つまり完全ランダムじゃなくて電光掲示板的に嫌がらせメッセージを目立たせたいという意図を持ってるから可能になる手法

213 :
>>211
なるほどw

214 :
こうかはばつぐんだ!

必死にNG逃れのためのスクリプト書いたのに全て通用しなくて発狂して逃げたww

215 :
結果として片棒担がされてた訳か

https://leia.2ch.sc/test/read.cgi/poverty/1589560323/870
870 番組の途中ですがアフィサイトへの転載は禁止です (ワッチョイW 2bde-sAUE) 2020/05/17(日) 00:30:59.00 ID:LtSh5oo60
再度書き込みなっちまったけど、レスすんなよ
グズ正規表現野郎。
お前が煽ったせいで、さらにサキオタアンチがめんどくさくなった。
皆、ひっそり、IDやワッチョイと、少しの正規表現でNGしてた。
それらができない2chブラウザとかあるのに。

自分だけ調子に乗るなよクズ。

216 :
>>215
それ荒らし本人が正規表現で完封されるのが悔しくて書いたやつだぞ

217 :
そうなのか
でもはたから見てると一緒だと思うよ
荒らし構うのはただの荒らしだよ

218 :
>>217
この荒らしは誰からも無視されてるのに何年も続けてる奴だからな
自分がターゲットにされて遊ばれて悔しいという体験は初めてだろうな
放置すれば荒らしが消えると思うのは間違い
キチガイは何年でも休まずに荒らし続ける
しかも手動で

そのキチガイの世界を壊してあげる作戦

219 :
自粛警察みたいな奴だな
正義とか妄信しない方が良いぞ

220 :
アホを悔しがらせて頭の体操になるなんて最高やん
こんな快感なこと他にある?

221 :
正規表現を自動生成するAIはまだ?

222 :
機械学習で正規表現を獲得するみたいなの出来ないですかね

223 :
他力本願+ノイズは一人前

224 :
*でも+でもどちらでもよいという場面では*にするのが慣例でしょうか?それとも文字通りどちらでもいいのかな?

225 :
このスレに来る奴って論理的思考をする人達だと思ってたけど、
慣例とか持ち出すような奴も来るんだな
意味が有って違うSyntaxなんだから適切な方を使え

226 :
どっちでもいいってどういう場合だ
どっちかになるだろ

227 :
例えば対象が1回以上の繰り返しだとします
0回以上には1回以上が含まれているのだから、どちらかが適切であるという積極的な理由が見つかりません

228 :
一つも無くていいってのと一つは必ず無いといけないってのは両立する場面は無い

229 :
「1回以上」ならつべこべ言わずに"+"だな
「0回は外したい」という意味を含むのであれば
"*"は仕様から外れる
個人的には"*"はできるだけ使わない

230 :
1回以上であることが分かっているのであれば0回の可能性がないことを示しておけるというのが合理的理由だよ。
*でマッチさせられるとしても後からソース見て混乱するだけだ。慣例といえば慣例だが機能すればいいというものでもない。

231 :
>>227
読む人(未来の自分含む)のことを考えれば、可能な限り対象を絞り込んだ方が(設計意図が読み取りやすくて)よい

232 :
A+とAA*の効率化の話かと思った
AA*の方が最初のAで最適化される分だけ速いとかなんとか

233 :2020/05/29
>>232
オートマトンを組むので速度は変わらないと思うが

十進BASIC
Pythonのお勉強 Part61
くだすれPython(超初心者用) その38
Visual Studio 2010 Part21
nim
つまりRubyってPerlの後続じゃん?
オナオナ開発プロジェクト
Excel VBA 質問スレ Part56
Java入門・初心者質問スレ Part.9
お前らプログラミング言語どうやって覚えたんや?
--------------------
MARCH関関同立を順位付けしたらどうなるの?
【トゥーロン】東京五輪代表 part14【U-21】
【画像】3449
新フリースタイルカヤックスレ2
【蘊蓄】AB型の男3【屁理屈】
【心筋梗塞】死に至らない病【うつ病】
モラルハラスメント8
【iOS】Tone Sphere総合スレ 2nd【Android】
メガドライブやろうぜ MD総合スレッド part51
【B-CAS改造】Bカスカード2038化書き換えツール配布所 201
【スズキ】4代目スイフト #22【ZC13S/43S/53S/83S】
【バ関東←低能】 関東人は、近畿の猿真似ばかりする無能集団www part2
ぶっちゃけニーズないだろこの板
アベノミクス失敗 物価上昇品目数が減少
☆メジャー・ロードレース統一スレ etape 299☆
PeX Part54
Jリーグスーパーカップ鹿島vs広島 視聴率3.7%
☆★次期タミヤRCを真剣に語り合うスレ☆★
[客寄せ]人口不足を本気で考えるスレ[おいでませ]
【MCI】三井化学スレ その13【汐留】病人高卒常駐
TOP カテ一覧 スレ一覧 100〜終まで 2ch元 削除依頼