[過去ログ] Regular Expression(正規表現) Part16 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
939: 2023/11/03(金)18:04 ID:328LomOy(1) AAS
キムラタクヤ人気で🌿
940: 2023/11/03(金)19:14 ID:3J2AA+3k(1) AAS
>>937
他人には厳しい条件はたすくせに外部コマンドやperl使うのはokなのかw
941: 2023/11/03(金)20:09 ID:PqFUo1lf(4/5) AAS
知ってる外部コマンドは使っていいに決まってる
頭の中では質問見た瞬間に出来てたよ
942: 2023/11/03(金)20:13 ID:/gQFYHMn(1) AAS
「課す」を「はたす」って読んでるってマ?🤣
943: 2023/11/03(金)21:12 ID:PqFUo1lf(5/5) AAS
この外部コマンドを考えた方は2004年に亡くなっている
外部リンク:en.wikipedia.org

20年前にこのコマンドを実装済みだったのはやばいな
perlの正規表現ですらそんなに機能が無かった時代だ
944: 2023/11/03(金)21:17 ID:N1OKG/2k(1) AAS
最初から略称と言ってるのに文字順不問だと思うほうがどうかしてる
945: 2023/11/04(土)08:36 ID:w1sIftMp(1) AAS
(正直|ぶっちゃけぇ?)高度すぎて理解が追いつかない
946: 2023/11/04(土)11:16 ID:PZuBSK2Q(1/2) AAS
カラクリを簡単に説明しよう

1、 (?:キ?ム?ラ?) で文字順を固定
2、 その他の部分でカッコ内でマッチする文字数の制限をかけている

例、 (?:キ?ム?ラ?) が0文字にマッチしたとしよう

\1が捕獲した中身は0文字になる
(?!\1) の\1の中身が0文字だったら (?!\1) は (?!) と同じ動作になる
(?!) は常にマッチを失敗させるから\1が0文字ならマッチ出来ない
結果的にこれが文字数制限になっている

ちなみに正規表現にカウント機能があればもっと簡単に書けていた
(
省6
947: 2023/11/04(土)14:47 ID:Xn6+uSVd(1) AAS
perlジジイこのスレでも自演してんのかw
948: 2023/11/04(土)17:37 ID:PZuBSK2Q(2/2) AAS
COBOLジジイからperlジジイにランクアップ
949
(1): 2023/11/05(日)13:03 ID:q8heJbgz(1/3) AAS
サクラエディタ

// 1
\1(a)

// 2
\k<name>(?<name>a)

2は1を名前付き括弧にしただけ
1は実行してもマッチに失敗するだけだが2はエラー
これはどちらもエラーになるほうが良い
950: 2023/11/05(日)13:07 ID:q8heJbgz(2/3) AAS
ん?本当にそうか?分からん
951: 2023/11/05(日)15:52 ID:q8heJbgz(3/3) AAS
2がエラーになるのは誤りだ、異論ある?
いつもの超優秀な人(AI?)の意見を聞かせて欲しい
952: 2023/11/06(月)06:59 ID:j6L5l5bH(1/2) AAS
異論はないってことで良いかな、おそらく既知の問題(仕様)だと思われる
この問題に長年気付かないとは考えられないから

本来動くべきサンプルを貼って>>949の件は終了とする

x2("(?:\\k<n>b|(?<n>a))+", "aab", 0, 3); // ERROR: undefined name <n> reference
x2("(?:(?<n>a)|\\k<n>b)+", "aab", 0, 2); // OK

x2("(?:\\1b|(a))+", "aab", 0, 3); // OK
x2("(?:(a)|\\1b)+", "aab", 0, 2); // OK
953: 2023/11/06(月)19:00 ID:j6L5l5bH(2/2) AAS
回避策
x2("(?<n>a){0}(?:\\k<n>b|\\g<n>)+", "aab", 0, 3); // OK
954: 2023/11/15(水)17:50 ID:Karf8A+O(1) AAS
文字列の頭に部分一致するパターンなんですが・・・

「abcdefg」にマッチするパターンですが、
/^a(?:b(?:c(?:d(?:e(?:f(?:g)?)?)?)?)?)?/
と書くしかないですか?
文字列が長大な場合、ちょっと無理なんですが・・・
(文字はアルファベットとは限らず)
WindowsのJScriptですが。
955: 2023/11/15(水)18:12 ID:ctqB5947(1) AAS
/^abcdefg/
956: 2023/11/15(水)18:41 ID:/mJ+eeiZ(1) AAS
無いんじゃないか?
^(?:abcdefg|abcdef|abcde|abcde|abcd|abc|ab|a)
とどっちがマシかな
957
(1): 2023/11/16(木)14:47 ID:7i/8qZTv(1/2) AAS
/^m/ にマッチして map だけマッチして欲しくない
/^m[^a][^p]/ これだと man にマッチしてくれない
どう書けばいいですか
958: 2023/11/16(木)14:53 ID:4tHpE5Jq(1) AAS
>>957
否定先読みが使えるなら^m(?!ap)かな?
959: 2023/11/16(木)15:59 ID:7i/8qZTv(2/2) AAS
ありがとう
960: 2023/11/17(金)04:25 ID:gwXFy+9L(1) AAS
特定の文字列を検出したい場合、\Q~\Eの~に、その特定の文字列を入れておけば、どんな文字が来ても大丈夫でしょうか?
961: 2023/11/17(金)06:13 ID:28WV0iMa(1) AAS
\Eが来ると困る
962: 2023/11/28(火)12:33 ID:vIU65Zk5(1/5) AAS
正規表現スレがいいと聞いてきました
ここがいい正規表現すれですか?

$ perl -e '$a="abc"; $a =~ s/(.*)/[$1]/g; print $a . "\n"'
[abc][]

なんで後ろにカッコが来るん?
.*に全部マッチするんだから
二個目の[]が来るなんてお菓子にゃん?
963
(1): 2023/11/28(火)13:42 ID:EkqG9ePT(1) AAS
perlよく知らんがgとったら消える
964
(1): 2023/11/28(火)13:54 ID:uy7CvN4q(1/3) AAS
推測だが、
1) .*にabcがマッチする -> [abc]
2) .*は0個でもいいので、末尾位置(NUL)にマッチする -> []
965
(1): 2023/11/28(火)14:25 ID:uy7CvN4q(2/3) AAS
2回目は$a=""の場合と同じだと思えばいい
ヌル文字列でも.*だとマッチするでしょ?
966: 2023/11/28(火)16:18 ID:vIU65Zk5(2/5) AAS
>>963
gとったら消える。Rubyも同じらしい。

>>964
[]が出るってことはなにかにマッチしてるってことでしょ?

>>965
それなら最初の.*にもマッチするじゃん?
一回目にマッチしなくて、二回目にマッチする理由がわからんのよ
967: 2023/11/28(火)16:18 ID:JJPCdnVt(1/2) AAS
仮に2回目でマッチする何かがあったとしても
.*はgreedyなんだから1回目で消費してないとお菓子イイ
968
(1): 2023/11/28(火)16:20 ID:JJPCdnVt(2/2) AAS
でもなぁ
バグなら今までこんなん気が付かないはずないと思うからどうなんだろ
1-
あと 34 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.022s