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:e01p03UP391デフォルトの名無しさん
2018/01/02(火) 20:13:20.96ID:bFwGimBi392デフォルトの名無しさん
2018/01/06(土) 20:03:46.61ID:eEPcZWZO 社外に情報を持ち出せず脳内再生ですみませんが、
以下の抽出条件を教えてください
●Regular Expressionの使用環境
Excel/VBAの参照設定で5.5
C#からのソースを移植中に、
Executeメソッドで(おそらく後読みができず)エラーとなっているが、
正規表現初心者で手も足も出ず…
●検索か置換か?
検索
●説明
複数行の
任意のホワイトスペースhostname: 後の文字列を検索し、
直後のドメイン名を取得したい。ただし、IPアドレスは除外したい。
●対象データ
hostname: hogehoge.com改行
hostname: mogemoge.com改行
hostname: 192.168.1.1改行
●希望する結果
hogehoge.com
mogemoge.com
よろしくお願いします。
以下の抽出条件を教えてください
●Regular Expressionの使用環境
Excel/VBAの参照設定で5.5
C#からのソースを移植中に、
Executeメソッドで(おそらく後読みができず)エラーとなっているが、
正規表現初心者で手も足も出ず…
●検索か置換か?
検索
●説明
複数行の
任意のホワイトスペースhostname: 後の文字列を検索し、
直後のドメイン名を取得したい。ただし、IPアドレスは除外したい。
●対象データ
hostname: hogehoge.com改行
hostname: mogemoge.com改行
hostname: 192.168.1.1改行
●希望する結果
hogehoge.com
mogemoge.com
よろしくお願いします。
393デフォルトの名無しさん
2018/01/06(土) 20:08:09.69ID:eEPcZWZO ●対象データ
△△hostname:△hogehoge.com改行
△△△△hostname:△mogemoge.com改行
△hostname:△192.168.1.1改行
のようにスペースが入っています。
Janeでカキコするとスペースが消えたので補足します。
△△hostname:△hogehoge.com改行
△△△△hostname:△mogemoge.com改行
△hostname:△192.168.1.1改行
のようにスペースが入っています。
Janeでカキコするとスペースが消えたので補足します。
394デフォルトの名無しさん
2018/01/06(土) 21:13:44.07ID:RuMnMvof ホスト名の条件が分からんからドメイン名と同等と仮定する
マルチラインモードで
^\s*(?:[A-Za-z](?:[A-Za-z0-9\-]{0,61}[A-Za-z0-9])?\.)*[A-Za-z](?:[A-Za-z0-9\-]{0,61}[A-Za-z0-9])?:[^\S\x0A\x0D]*((?:[A-Za-z](?:[A-Za-z0-9\-]{0,61}[A-Za-z0-9])?\.)*[A-Za-z](?:[A-Za-z0-9\-]{0,61}[A-Za-z0-9])?)$
としてグループ1のキャプチャを見る, とか
つうかVBAなら正規表現で頑張るより改行文字と:でそれぞれsplitしてループ回しながらtrimするのが自然だと思うけど
マルチラインモードで
^\s*(?:[A-Za-z](?:[A-Za-z0-9\-]{0,61}[A-Za-z0-9])?\.)*[A-Za-z](?:[A-Za-z0-9\-]{0,61}[A-Za-z0-9])?:[^\S\x0A\x0D]*((?:[A-Za-z](?:[A-Za-z0-9\-]{0,61}[A-Za-z0-9])?\.)*[A-Za-z](?:[A-Za-z0-9\-]{0,61}[A-Za-z0-9])?)$
としてグループ1のキャプチャを見る, とか
つうかVBAなら正規表現で頑張るより改行文字と:でそれぞれsplitしてループ回しながらtrimするのが自然だと思うけど
395デフォルトの名無しさん
2018/01/06(土) 22:13:51.90ID:eEPcZWZO >>394
なるほど、hostnameを検索して後読みするのではなく、
ドメインで合致させつつ、IPアドレスを除外するというわけですね。
理解のために改行してみました。
^\s*
(?:[A-Za-z](?:[A-Za-z0-9\-]{0,61}[A-Za-z0-9])?\.)*[A-Za-z](?:[A-Za-z0-9\-]{0,61}[A-Za-z0-9])
?:[^\S\x0A\x0D]
*(
(?:[A-Za-z](?:[A-Za-z0-9\-]{0,61}[A-Za-z0-9])?\.)*[A-Za-z](?:[A-Za-z0-9\-]{0,61}[A-Za-z0-9])
?)$
のうち、
[A-Za-z](?:[A-Za-z0-9\-]{0,61}[A-Za-z0-9])?\.)*[A-Za-z](?:[A-Za-z0-9\-]{0,61}[A-Za-z0-9])
がドメイン、
[^\S\x0A\x0D]
がIPアドレス除外ですね。
私もVBAならInstrとMIDを駆使したほうが可読性も生産性も上がると思うのですが、
過去のC#とPerlの正規表現コードを再利用しつつ、将来的にはPythonとかにも応用できるように
正規表現でがんばれ、との指示を受けたのですが、
いきなりVBAでは後読みできないとか、まわりに有識者のいない罠にはまり難儀しています。
なるほど、hostnameを検索して後読みするのではなく、
ドメインで合致させつつ、IPアドレスを除外するというわけですね。
理解のために改行してみました。
^\s*
(?:[A-Za-z](?:[A-Za-z0-9\-]{0,61}[A-Za-z0-9])?\.)*[A-Za-z](?:[A-Za-z0-9\-]{0,61}[A-Za-z0-9])
?:[^\S\x0A\x0D]
*(
(?:[A-Za-z](?:[A-Za-z0-9\-]{0,61}[A-Za-z0-9])?\.)*[A-Za-z](?:[A-Za-z0-9\-]{0,61}[A-Za-z0-9])
?)$
のうち、
[A-Za-z](?:[A-Za-z0-9\-]{0,61}[A-Za-z0-9])?\.)*[A-Za-z](?:[A-Za-z0-9\-]{0,61}[A-Za-z0-9])
がドメイン、
[^\S\x0A\x0D]
がIPアドレス除外ですね。
私もVBAならInstrとMIDを駆使したほうが可読性も生産性も上がると思うのですが、
過去のC#とPerlの正規表現コードを再利用しつつ、将来的にはPythonとかにも応用できるように
正規表現でがんばれ、との指示を受けたのですが、
いきなりVBAでは後読みできないとか、まわりに有識者のいない罠にはまり難儀しています。
396デフォルトの名無しさん
2018/01/06(土) 22:25:41.73ID:RuMnMvof > がIPアドレス除外ですね
違う
\Sは空白文字以外だから[^\S\x0A\x0D]は空白文字以外とCR, LFの「何れでもない」場合, つまり空白文字からCRとLFを除外したもの
そもそも(先頭が英字でなければならない)ドメイン名でマッチングしてるんだから先頭が数字で始まるIPアドレスを後から除外する必要はない
再利用性に関しても, 後読み出来るエンジンかそうでないかで既に失われてるんじゃないかね
キャプチャの取得方法なんぞ言語ごとに大分違うしな
仕事で使うなら尚更メンテし辛い上に遅い正規表現を使わにゃならん積極的理由は無い
splitでループ回せば入力のサイズに対して線型時間で終わることが保証される上に保守性も高い
違う
\Sは空白文字以外だから[^\S\x0A\x0D]は空白文字以外とCR, LFの「何れでもない」場合, つまり空白文字からCRとLFを除外したもの
そもそも(先頭が英字でなければならない)ドメイン名でマッチングしてるんだから先頭が数字で始まるIPアドレスを後から除外する必要はない
再利用性に関しても, 後読み出来るエンジンかそうでないかで既に失われてるんじゃないかね
キャプチャの取得方法なんぞ言語ごとに大分違うしな
仕事で使うなら尚更メンテし辛い上に遅い正規表現を使わにゃならん積極的理由は無い
splitでループ回せば入力のサイズに対して線型時間で終わることが保証される上に保守性も高い
397デフォルトの名無しさん
2018/01/07(日) 12:17:55.91ID:ln22xrzP398デフォルトの名無しさん
2018/01/10(水) 23:41:51.90ID:qa5Jh8Cf399デフォルトの名無しさん
2018/01/11(木) 10:30:10.40ID:Xo4biI2J ^[△]*hostname:[△]*([0-9.]*[A-Za-z\-][0-9A-Za-z.\-]*)$
^[△]*hostname:[△]*([0-9.]*[^\s0-9.]\S*)$
hostname:△mevius.5ch.net
hostname:△86886.jp
hostname:△日本語.jp
hostname:△はじめよう.みんな
^[△]*hostname:[△]*([0-9.]*[^\s0-9.]\S*)$
hostname:△mevius.5ch.net
hostname:△86886.jp
hostname:△日本語.jp
hostname:△はじめよう.みんな
400デフォルトの名無しさん
2018/01/11(木) 12:30:44.58ID:/99JjIqr401デフォルトの名無しさん
2018/01/11(木) 13:56:21.29ID:/99JjIqr402デフォルトの名無しさん
2018/01/11(木) 17:51:18.77ID:WzsJRajU あぁ, hostnameは固定文字列なのか
なら
^\s*hostname:[^\S\x0A\x0D]*((?:[A-Za-z](?:[A-Za-z0-9\-]{0,61}[A-Za-z0-9])?\.)*[A-Za-z](?:[A-Za-z0-9\-]{0,61}[A-Za-z0-9])?)$
だけど
なら
^\s*hostname:[^\S\x0A\x0D]*((?:[A-Za-z](?:[A-Za-z0-9\-]{0,61}[A-Za-z0-9])?\.)*[A-Za-z](?:[A-Za-z0-9\-]{0,61}[A-Za-z0-9])?)$
だけど
403デフォルトの名無しさん
2018/01/16(火) 12:15:21.97ID:RA24ssqp 正規表現の書き方教えてください。
CentOS 7のサーバーにURLを要求した際、下記のような余計な文字が付きます。付くことがあります。
/ディレクトリ/ファイル名.拡張子%01
/ディレクトリ/desktop.inib%01
/ディレクトリ/desktop.inie%01
またファイル名の後に、
%EE%81%9F%E2%81%80%EE%81%97%C9%84とか
%E6%89%B8%E7%A8%B7%E4%99%BA%E5%A5%97%E3%8D%95%E4%BD%8C%E6%A1%B2%01とか
ファイル名の語尾に不特定の文字が勝手に付く場合もあります。
ディレクトリを要求したときも
ディレクトリの語尾に%E4%84%B7など(これも不特定)が付いてしまうことがあります。
これを除外するには、
正規表現でどのように書けば良いのでしょうか?
よろしくお願いします。
CentOS 7のサーバーにURLを要求した際、下記のような余計な文字が付きます。付くことがあります。
/ディレクトリ/ファイル名.拡張子%01
/ディレクトリ/desktop.inib%01
/ディレクトリ/desktop.inie%01
またファイル名の後に、
%EE%81%9F%E2%81%80%EE%81%97%C9%84とか
%E6%89%B8%E7%A8%B7%E4%99%BA%E5%A5%97%E3%8D%95%E4%BD%8C%E6%A1%B2%01とか
ファイル名の語尾に不特定の文字が勝手に付く場合もあります。
ディレクトリを要求したときも
ディレクトリの語尾に%E4%84%B7など(これも不特定)が付いてしまうことがあります。
これを除外するには、
正規表現でどのように書けば良いのでしょうか?
よろしくお願いします。
404デフォルトの名無しさん
2018/01/16(火) 13:31:33.72ID:y9BMfGeo https://social.technet.microsoft.com/Forums/ja-JP/5debbbcd-1def-42f8-a495-f655ebd58c4b/windows10-1709-webdav-?forum=win10itprogeneralJP
コレか?
URLエンコード文字だけなら簡単だがASCIIが入るとなると容易ではない(どこまでがファイル名か判別出来ない)
クライアント側のアップデートを待つ方が賢明な気がする
コレか?
URLエンコード文字だけなら簡単だがASCIIが入るとなると容易ではない(どこまでがファイル名か判別出来ない)
クライアント側のアップデートを待つ方が賢明な気がする
405デフォルトの名無しさん
2018/01/16(火) 13:45:59.33ID:y9BMfGeo あと忘れてたけどWebDAVならクライアントにWinSCP使うとか
406403
2018/01/16(火) 14:48:31.79ID:RA24ssqp ありがとうございます。
自分の場合「空」にはなってませんが似てますね。
便利なクライアントアプリケーション探してみます。
自分の場合「空」にはなってませんが似てますね。
便利なクライアントアプリケーション探してみます。
407デフォルトの名無しさん
2018/01/16(火) 17:00:43.44ID:1yOH1J8J pattern = /^(.*)(?!%)/
p pattern.match('abc%123')
Ruby で否定先読みを使ったら、「abc」だけ取れない。
すべての文字列にマッチしてしまう
なんでやねんw
p pattern.match('abc%123')
Ruby で否定先読みを使ったら、「abc」だけ取れない。
すべての文字列にマッチしてしまう
なんでやねんw
408デフォルトの名無しさん
2018/01/16(火) 17:14:43.11ID:G8V+pnDB なんでやもなにも、.* だから全体にマッチするよ。1文字ごとにチェックするか、文字クラスを使いなさい。
409デフォルトの名無しさん
2018/01/16(火) 18:31:44.93ID:1yOH1J8J Ruby では、先頭から、% を探して、それ以降を削除する
str = '/dir/desktop.inib%01%EE%81'
pos = str.index('%')
if pos
str = str.slice(0...pos)
end
puts str
結果
/dir/desktop.inib
str = '/dir/desktop.inib%01%EE%81'
pos = str.index('%')
if pos
str = str.slice(0...pos)
end
puts str
結果
/dir/desktop.inib
410409
2018/01/16(火) 19:25:09.57ID:1yOH1J8J 正規表現でも、できた。
Ruby では、先頭から、% 以外の文字を探す
pattern = /^[^%]+/
str = '/dir/desktop.inib%01%EE%81'
puts pattern.match str
結果
/dir/desktop.inib
Ruby では、先頭から、% 以外の文字を探す
pattern = /^[^%]+/
str = '/dir/desktop.inib%01%EE%81'
puts pattern.match str
結果
/dir/desktop.inib
411デフォルトの名無しさん
2018/01/16(火) 20:18:43.79ID:y9BMfGeo 要件には書いてないけど, .iniまでが正しいファイル名だと思うよ
その後ろのbとかeもゴミ
その後ろのbとかeもゴミ
412デフォルトの名無しさん
2018/01/16(火) 22:39:12.31ID:9E60uHWe どういう法則性でb,eが付いたのかがわからないと、
b,eの他にも付くのがあるのか、また付かないこともあるのかもわからん
例えば、hoge.exee%01とかになるのか?
b,eの他にも付くのがあるのか、また付かないこともあるのかもわからん
例えば、hoge.exee%01とかになるのか?
413403
2018/01/17(水) 15:18:31.78ID:BVJUZk9+414413
2018/01/17(水) 17:17:53.77ID:BVJUZk9+ 最後に変な文章を残してしまいました。
すべてが1byte文字を要求するときは、
そんな変なゴミは付きにくいと書こうと思ったのですが、
まだ確証が無いので無視して結構です。
すべてが1byte文字を要求するときは、
そんな変なゴミは付きにくいと書こうと思ったのですが、
まだ確証が無いので無視して結構です。
415デフォルトの名無しさん
2018/02/07(水) 23:42:01.50ID:3vNjEx0B ●Regular Expressionの使用環境
桜エディタ(テキストエディタ)
●検索か置換か?
置き換え
●説明
文字数、文字種はいろいろです。ただしすべて半角(1バイト文字)です。
結果として、<>内の文字だけにできればどんな方法でも構いません
必要な情報かわかりませんが、<>の外には、<>があることはありません。
asqa>w3e<a>s98<as897kja> ←こんな感じの行はありません。
行末は必ず、>で終わり、必要な文字は必ず<>でくくられたものの中にあります。
いらない文字<必要な文字>ここに改行が入る という書式は絶対です。
●対象データ
R&^&*(!TYUIKM<slihfd>
BA%(*&%ASAS<asdlikh>
TF^(VB(*&N<a09sfyighkljn>
●希望する結果
slihfd
asdlikh
a09sfyighkljn
よろしくお願いいたします。
桜エディタ(テキストエディタ)
●検索か置換か?
置き換え
●説明
文字数、文字種はいろいろです。ただしすべて半角(1バイト文字)です。
結果として、<>内の文字だけにできればどんな方法でも構いません
必要な情報かわかりませんが、<>の外には、<>があることはありません。
asqa>w3e<a>s98<as897kja> ←こんな感じの行はありません。
行末は必ず、>で終わり、必要な文字は必ず<>でくくられたものの中にあります。
いらない文字<必要な文字>ここに改行が入る という書式は絶対です。
●対象データ
R&^&*(!TYUIKM<slihfd>
BA%(*&%ASAS<asdlikh>
TF^(VB(*&N<a09sfyighkljn>
●希望する結果
slihfd
asdlikh
a09sfyighkljn
よろしくお願いいたします。
416デフォルトの名無しさん
2018/02/08(木) 00:23:12.83ID:kN+YdVUy ^[^<>]*<([^<>]+)>$
$1
$1
417デフォルトの名無しさん
2018/02/08(木) 23:06:15.86ID:VxK8nSc/ [^<>^] サンクス
418デフォルトの名無しさん
2018/02/08(木) 23:24:13.78ID:Zisu4Ynz >>416
ありがとうございます。うまく抽出できました。
ありがとうございます。うまく抽出できました。
419デフォルトの名無しさん
2018/02/08(木) 23:37:41.58ID:kN+YdVUy このぐらいの正規表現なら基本だし, 覚えると正規表現の載ってるエディタでの編集が楽になるよ
とりあえずPerl互換を勉強してみるといい
とりあえずPerl互換を勉強してみるといい
420デフォルトの名無しさん
2018/02/14(水) 13:35:37.03ID:2LP2x+pK C#なんですが
[ああ]おおおおお
[いいい]こここここ
[うう][ええ]そそそそそ
ととととと[たた]
↓
おおおおお
こここここ
そそそそそ
ととととと[たた]
にしたいんですが、どうしたらいいでしょうか。
※先頭じゃない文中の[はは]は残したい
[ああ]おおおおお
[いいい]こここここ
[うう][ええ]そそそそそ
ととととと[たた]
↓
おおおおお
こここここ
そそそそそ
ととととと[たた]
にしたいんですが、どうしたらいいでしょうか。
※先頭じゃない文中の[はは]は残したい
421デフォルトの名無しさん
2018/02/16(金) 13:56:45.89ID:uX7uVTrc \[[^\]]*?\](?!$)
ところによっては\[[^\]]*?\](?!(?:\n|$))
ところによっては\[[^\]]*?\](?!(?:\n|$))
422デフォルトの名無しさん
2018/02/16(金) 14:10:38.80ID:ga78Zu+3 マルチラインモード
^(?:\[([^\[\]])\1*\])+
マッチ部分を除去
^(?:\[([^\[\]])\1*\])+
マッチ部分を除去
423420
2018/02/16(金) 14:11:39.72ID:CWd36B/o 1行目でバッチリ
感動しました!!!
感動しました!!!
424デフォルトの名無しさん
2018/02/16(金) 14:15:41.25ID:CPKH/1dQ それ文末以外消えるけどええのん
425421
2018/02/16(金) 15:30:22.93ID:mPXTHkFg >>424
文中は消えていいんじゃない?
>>420に
> [うう][ええ]そそそそそ
> そそそそそ
ってあるし
あ、
> ※先頭じゃない文中の[はは]は残したい
この[はは]はマッチしたらダメなのか
これ例の中においてくんないかなー
というか定義がよくわからんちん
^\[.*\](?!$)
ところによっては(?<=(?:^|\n))\[.*\](?!(?:\n|$))
マッチ
[ああ]おおおおお
[いいい]こここここ
[うう][ええ]そそそそそ
[たた]ななはは[まま]やや
→[たた]ななはは[まま]
[たた]ななははまま[やや]
→[たた]
アンマッチ
ととととと[たた]
ちち[はは]ぱぱまま
文中は消えていいんじゃない?
>>420に
> [うう][ええ]そそそそそ
> そそそそそ
ってあるし
あ、
> ※先頭じゃない文中の[はは]は残したい
この[はは]はマッチしたらダメなのか
これ例の中においてくんないかなー
というか定義がよくわからんちん
^\[.*\](?!$)
ところによっては(?<=(?:^|\n))\[.*\](?!(?:\n|$))
マッチ
[ああ]おおおおお
[いいい]こここここ
[うう][ええ]そそそそそ
[たた]ななはは[まま]やや
→[たた]ななはは[まま]
[たた]ななははまま[やや]
→[たた]
アンマッチ
ととととと[たた]
ちち[はは]ぱぱまま
426421
2018/02/16(金) 15:30:54.45ID:mPXTHkFg >>425
[たた]ななはは[まま]やや
の[まま]を含めずマッチしたい([たた])ならかなり複雑になりそうでちょっといますぐは思いつかないや
それってつまり
行頭[
行頭から括弧が繋がり、且つ、行末]を含めない範囲
なら
[たた][なな][はは][まま][やや]
のマッチが
→[たた][なな][はは][まま]
でいいのか、それとも行そのものがアンマッチなのかよーわからんし
[たた]ななはは[まま]やや
の[まま]を含めずマッチしたい([たた])ならかなり複雑になりそうでちょっといますぐは思いつかないや
それってつまり
行頭[
行頭から括弧が繋がり、且つ、行末]を含めない範囲
なら
[たた][なな][はは][まま][やや]
のマッチが
→[たた][なな][はは][まま]
でいいのか、それとも行そのものがアンマッチなのかよーわからんし
427デフォルトの名無しさん
2018/02/16(金) 15:55:42.80ID:CPKH/1dQ428デフォルトの名無しさん
2018/02/16(金) 15:57:06.09ID:CWd36B/o429デフォルトの名無しさん
2018/02/16(金) 16:00:32.77ID:CWd36B/o すみません
[ああ]おおおおお → おおおおお
[あああ]おおおおお → おおおおお
[ああ][いい]おおおおお → おおおおお
あああああ[いい] → あああああ[いい]
あああ[いい]うう → あああ[いい]うう
です。
先頭付近の [] は消したいけど、それ以外は残したい、って風です。
[ああ]おおおおお → おおおおお
[あああ]おおおおお → おおおおお
[ああ][いい]おおおおお → おおおおお
あああああ[いい] → あああああ[いい]
あああ[いい]うう → あああ[いい]うう
です。
先頭付近の [] は消したいけど、それ以外は残したい、って風です。
430421
2018/02/16(金) 16:24:42.64ID:rLsYeXBU >>429
[たた]ななはは[まま]やや
は?
[たた][なな][はは][まま][やや]
はどーなんの?
[あいう[かきく]たちつ]
[あいう[かきく]]たちつ
とか括弧内包の場合どーなんのとかも
あと行末も係わるんだから、例の同じ行に余計な文字列入れないで(たぶんこの件では大過ないと思うけど)
[たた]ななはは[まま]やや
は?
[たた][なな][はは][まま][やや]
はどーなんの?
[あいう[かきく]たちつ]
[あいう[かきく]]たちつ
とか括弧内包の場合どーなんのとかも
あと行末も係わるんだから、例の同じ行に余計な文字列入れないで(たぶんこの件では大過ないと思うけど)
431421
2018/02/16(金) 16:25:23.31ID:rLsYeXBU >>430
内包無視するとしたら
(?<=^)(?:\[[^\[]*?\])+(?!$)
ところによって(?<=(?:^|\n))(?:\[[^\[]*?\])+(?!(?:\n|$))
かね
>>429を満たし、
[たた]ななはは[まま]やや
→[たた]
[たた][なな][はは][まま][やや]
→[たた][なな][はは][まま]
となるし
たぶん
行頭[ および 行頭[に対応する]までマッチ
行頭[ および 行頭[に対応する]から括弧が繋がり、且つ、行末] および 行末]に対応する[までを含めない範囲
あたりなんだろうなー
ぱっと思いつくのはちょめちょめしたダウンロードファイルのリネームをしたいようなかんじかね
内包無視するとしたら
(?<=^)(?:\[[^\[]*?\])+(?!$)
ところによって(?<=(?:^|\n))(?:\[[^\[]*?\])+(?!(?:\n|$))
かね
>>429を満たし、
[たた]ななはは[まま]やや
→[たた]
[たた][なな][はは][まま][やや]
→[たた][なな][はは][まま]
となるし
たぶん
行頭[ および 行頭[に対応する]までマッチ
行頭[ および 行頭[に対応する]から括弧が繋がり、且つ、行末] および 行末]に対応する[までを含めない範囲
あたりなんだろうなー
ぱっと思いつくのはちょめちょめしたダウンロードファイルのリネームをしたいようなかんじかね
432デフォルトの名無しさん
2018/02/16(金) 16:26:09.97ID:dBpGhFbZ 仕様に不備があると作る方は大変だな
433デフォルトの名無しさん
2018/02/16(金) 17:00:58.65ID:Q4bZpk0j 正規表現の使いどころってどんなところですかね?
普通レベルのプログラマから見ると可読性低くて保守性も悪い気がする
タグの要素を最初にバッと配列に入れやすいとか?
普通レベルのプログラマから見ると可読性低くて保守性も悪い気がする
タグの要素を最初にバッと配列に入れやすいとか?
434デフォルトの名無しさん
2018/02/16(金) 17:11:19.84ID:GgVv8IsN >>433
可読性低くて保守性も悪いっていうのは本当にその通り
プログラミングで使うならまずは(正規表現が非常に直感的でない限りは)正規表現以外の選択肢を考えるべきで, それが可読性や保守性を上げないとなった上で正規表現が選択されるのがよい
勿論保守性や可読性を気にしないワンライナーとかであれば気にする必要はないが
あとはエディタやgrepなんかだと他に有力な選択肢がないから正規表現になる
可読性低くて保守性も悪いっていうのは本当にその通り
プログラミングで使うならまずは(正規表現が非常に直感的でない限りは)正規表現以外の選択肢を考えるべきで, それが可読性や保守性を上げないとなった上で正規表現が選択されるのがよい
勿論保守性や可読性を気にしないワンライナーとかであれば気にする必要はないが
あとはエディタやgrepなんかだと他に有力な選択肢がないから正規表現になる
435デフォルトの名無しさん
2018/02/16(金) 17:18:48.02ID:h4N2NTdR 単純に、
(?m)^\[.*\](.*)
じゃだめなん?
(?m)^\[.*\](.*)
じゃだめなん?
436デフォルトの名無しさん
2018/02/16(金) 17:23:34.33ID:GgVv8IsN437デフォルトの名無しさん
2018/02/16(金) 17:34:31.04ID:dBpGhFbZ438デフォルトの名無しさん
2018/02/16(金) 18:30:54.06ID:Q4bZpk0j439デフォルトの名無しさん
2018/02/16(金) 19:13:24.69ID:M8XJLm2H440デフォルトの名無しさん
2018/02/16(金) 20:46:56.42ID:d9VDf+sb >>420
$# 「行頭部分にある 1 個以上の \[[^\]*\] を削除」と初見で思ったのだが、違うのか?
$# それとも C# でどうやるかわからないという話? 申し訳ないが C# は知らない。
$
$cat a_in
[ああ]おおおおお
[いいい]こここここ
[うう][ええ]そそそそそ
ととととと[たた]
[ええ]あああ[いい]うう
$perl -pe 's/^(\[[^\]]*\])+//' < a_in
おおおおお
こここここ
そそそそそ
ととととと[たた]
あああ[いい]うう
$perl -0777 -pe 's/^(\[[^\]]*\])+//gm' < a_in
おおおおお
こここここ
そそそそそ
ととととと[たた]
あああ[いい]うう
$
$# 「行頭部分にある 1 個以上の \[[^\]*\] を削除」と初見で思ったのだが、違うのか?
$# それとも C# でどうやるかわからないという話? 申し訳ないが C# は知らない。
$
$cat a_in
[ああ]おおおおお
[いいい]こここここ
[うう][ええ]そそそそそ
ととととと[たた]
[ええ]あああ[いい]うう
$perl -pe 's/^(\[[^\]]*\])+//' < a_in
おおおおお
こここここ
そそそそそ
ととととと[たた]
あああ[いい]うう
$perl -0777 -pe 's/^(\[[^\]]*\])+//gm' < a_in
おおおおお
こここここ
そそそそそ
ととととと[たた]
あああ[いい]うう
$
441デフォルトの名無しさん
2018/02/16(金) 21:24:08.90ID:nYHQACKk442デフォルトの名無しさん
2018/02/17(土) 05:30:35.08ID:xZfN9pA3 何を望んでいるのかを明確にする方が先かと……
443デフォルトの名無しさん
2018/02/17(土) 11:13:15.50ID:sN1lrGX4444デフォルトの名無しさん
2018/02/17(土) 11:27:08.57ID:IU1gsQgu [ab][cd][ef]ああ
これは、繰り返しが入っている。
N回削除する必要がある
[ab][cd][ef]ああ
[cd][ef]ああ
[ef]ああ
ああ
[〜] でグループ化すべき
これは、繰り返しが入っている。
N回削除する必要がある
[ab][cd][ef]ああ
[cd][ef]ああ
[ef]ああ
ああ
[〜] でグループ化すべき
445デフォルトの名無しさん
2018/02/17(土) 12:22:01.47ID:IU1gsQgu /^\[[^\]]*\]/ =~ "[ab][cd]ああ"
$& #=> [ab]
Ruby で書いた。
行頭が\[ で、\[ 以外の文字が、0以上続いて、\] がある
$& #=> [ab]
Ruby で書いた。
行頭が\[ で、\[ 以外の文字が、0以上続いて、\] がある
446デフォルトの名無しさん
2018/02/17(土) 12:32:03.69ID:IU1gsQgu /^\[[^\]]*\]/ =~ "[ab][cd]ああ"
$& #=> [ab]
$' #=> [cd]ああ
/^\[[^\]]*\]/ =~ $'
$& #=> [cd]
$' #=> ああ
/^\[[^\]]*\]/ =~ $'
#=> nil
Ruby で書いた。
行頭が\[ で、\[ 以外の文字が、0以上続いて、\] がある
$& はマッチした部分で、$' はマッチした部分の後ろを表すから、
マッチを繰り返していけば、出来るけど
$& #=> [ab]
$' #=> [cd]ああ
/^\[[^\]]*\]/ =~ $'
$& #=> [cd]
$' #=> ああ
/^\[[^\]]*\]/ =~ $'
#=> nil
Ruby で書いた。
行頭が\[ で、\[ 以外の文字が、0以上続いて、\] がある
$& はマッチした部分で、$' はマッチした部分の後ろを表すから、
マッチを繰り返していけば、出来るけど
447デフォルトの名無しさん
2018/02/17(土) 12:42:57.33ID:IU1gsQgu /^(\[[^\]]*\])+/ =~ "[ab][cd]ああ[ef]"
$& #=> [ab][cd]
やったー。Ruby で出来た
\[ があり、\[ 以外の文字が、0以上続いて、\] がある。
これをグループ化して、1回以上繰り返す
ただし、グループ外に、先頭からを指定する
$& #=> [ab][cd]
やったー。Ruby で出来た
\[ があり、\[ 以外の文字が、0以上続いて、\] がある。
これをグループ化して、1回以上繰り返す
ただし、グループ外に、先頭からを指定する
448デフォルトの名無しさん
2018/02/18(日) 07:04:41.40ID:4dAbe4pu 正規表現で使用される記号があるとワケわからなくなってくるから
適当な記号、例えばQなどに置き換えて試行錯誤して最後に元の記号に戻したりする
適当な記号、例えばQなどに置き換えて試行錯誤して最後に元の記号に戻したりする
449デフォルトの名無しさん
2018/02/18(日) 11:53:19.92ID:QWcmX5lk 余計なバックトラックを防ぐために
$s = qr/(?>\s*)/
ってやってパターンに埋め込むことならある。
$s = qr/(?>\s*)/
ってやってパターンに埋め込むことならある。
450デフォルトの名無しさん
2018/02/23(金) 22:29:48.73ID:vtIXFjR6 (?s:^(?=.*ス)(?=.*プ))
CHmateで使う正規表現らしいんだけど最初の
(?s:"
の意味が検索してもわからないのですが教えていただけないでしょうか
CHmateで使う正規表現らしいんだけど最初の
(?s:"
の意味が検索してもわからないのですが教えていただけないでしょうか
451デフォルトの名無しさん
2018/02/23(金) 22:45:42.10ID:0zsudQHR452デフォルトの名無しさん
2018/02/24(土) 00:35:55.07ID:bvxyjlLF >>451
ありがとございます
確認してなんとなく分かりました
ところでこの正規表現の場合(?s:)って名前には改行はないので不要じゃないかと思ってしまうのですがどういう目的で使われているのでしょうか
ありがとございます
確認してなんとなく分かりました
ところでこの正規表現の場合(?s:)って名前には改行はないので不要じゃないかと思ってしまうのですがどういう目的で使われているのでしょうか
453デフォルトの名無しさん
2018/02/24(土) 01:37:05.64ID:d6NztqhC 書いたヤツの趣味じゃ?
しかもかなりてきとう
ワッチョイ名前ならおそらくドコモ判別?でもプだけではないhttp://itest.5ch.net/test/read.cgi/mango/1467623805/312
先読みなんてコストかけなくてもKOROKORO AAはSd固定
改行を無理矢理入れ込んでというシチュエーションでスとプでねらい打ちも違和感
本文で^(?=.*A)の類を使うとレス数後半のコストはかなりのもの
これは名前だから大したことにはならないけど
深謀遠慮があるのかも知れんがそれこそ書いた本人へ
しかもかなりてきとう
ワッチョイ名前ならおそらくドコモ判別?でもプだけではないhttp://itest.5ch.net/test/read.cgi/mango/1467623805/312
先読みなんてコストかけなくてもKOROKORO AAはSd固定
改行を無理矢理入れ込んでというシチュエーションでスとプでねらい打ちも違和感
本文で^(?=.*A)の類を使うとレス数後半のコストはかなりのもの
これは名前だから大したことにはならないけど
深謀遠慮があるのかも知れんがそれこそ書いた本人へ
454デフォルトの名無しさん
2018/02/27(火) 15:54:44.12ID:2v1tH105 C#で、
var rgx = new Regex("(.)+");
var str = "こんにちは。";
Console.WriteLine(rgx.Replace(str, "$1"));
とすると「。」が出力されるのですが、なぜですか?
$1は「。」になるのですか?「こ」だと思ったのですが、違いますか?
var rgx = new Regex("(.)+");
var str = "こんにちは。";
Console.WriteLine(rgx.Replace(str, "$1"));
とすると「。」が出力されるのですが、なぜですか?
$1は「。」になるのですか?「こ」だと思ったのですが、違いますか?
455デフォルトの名無しさん
2018/02/27(火) 16:08:59.77ID:u9k8VAiO >>454
理由はここ読んで
https://www.regular-expressions.info/captureall.html
短い説明は↓ここでも出てくる
https://regex101.com/r/te5DBr/1
理由はここ読んで
https://www.regular-expressions.info/captureall.html
短い説明は↓ここでも出てくる
https://regex101.com/r/te5DBr/1
456デフォルトの名無しさん
2018/02/27(火) 17:03:18.46ID:VEiALCIH どれどれ…
javascript
'こんにちは。'.replace(/(.)+/, '$1');
=> "。"
ほんまや!知らんかった
javascript
'こんにちは。'.replace(/(.)+/, '$1');
=> "。"
ほんまや!知らんかった
457デフォルトの名無しさん
2018/02/27(火) 19:34:07.35ID:LuvO3mbW458デフォルトの名無しさん
2018/02/27(火) 21:09:42.50ID:PLAOSS1/ Ruby でも、
'こんにちは。'.gsub(/(.)+/, $1)
#=> "。"
'こんにちは。'.gsub(/(.)+/, $1)
#=> "。"
459デフォルトの名無しさん
2018/02/27(火) 22:02:02.32ID:u9k8VAiO >>457
.NETはCaptureCollectionってのに入れてくれるみたいよ
ただフルマッチとキャプチャリンググループと両方1度に必要なければ
/(.){1}/みたいに正規表現変えれば配列に入れられるよね
.NETはCaptureCollectionってのに入れてくれるみたいよ
ただフルマッチとキャプチャリンググループと両方1度に必要なければ
/(.){1}/みたいに正規表現変えれば配列に入れられるよね
460デフォルトの名無しさん
2018/02/28(水) 21:03:30.09ID:V9ixSdqS461デフォルトの名無しさん
2018/02/28(水) 22:05:09.20ID:pxJOkH76 単純に最後にマッチした部分ってことじゃないかな。赤ラクダにそう書いてある。
C# は知らない。誰か翻訳してあげて。
C# は知らない。誰か翻訳してあげて。
462デフォルトの名無しさん
2018/03/01(木) 00:07:23.55ID:UkKloD3U >>460
キャプチャグループに量指定子がついてるとそのキャプチャグループの箇所に複数回マッチする可能性があるよね。
んで複数回マッチした場合は最後にマッチしたやつがそのキャプチャグループに入ってるってこと
"こんにちは。”に対して、/(.)+/でマッチをかけると
最初にピリオドが“こ”にマッチしてそれをグループ1に入れて
次に+を見てまたマッチするか繰り返す
今度はピリオドに”ん”がマッチするからそれをグループ1に入れて、、、
あとは繰り返し
“こんにちは。”が/(.)+/にフルマッチした時点でグループ1に入ってるのは”。”
キャプチャグループに量指定子がついてるとそのキャプチャグループの箇所に複数回マッチする可能性があるよね。
んで複数回マッチした場合は最後にマッチしたやつがそのキャプチャグループに入ってるってこと
"こんにちは。”に対して、/(.)+/でマッチをかけると
最初にピリオドが“こ”にマッチしてそれをグループ1に入れて
次に+を見てまたマッチするか繰り返す
今度はピリオドに”ん”がマッチするからそれをグループ1に入れて、、、
あとは繰り返し
“こんにちは。”が/(.)+/にフルマッチした時点でグループ1に入ってるのは”。”
463デフォルトの名無しさん
2018/03/01(木) 00:17:03.42ID:ikcjc59H /(.+)/ =~ 'こんにちは。'
$1 は、'こんにちは。'
/(.)+/ =~ 'こんにちは。'
$1 は、'。'
上は、1回しかマッチしていない、最長マッチ。
下は、1文字のマッチで、6回マッチして、最後のマッチが、'。'
$1 は、'こんにちは。'
/(.)+/ =~ 'こんにちは。'
$1 は、'。'
上は、1回しかマッチしていない、最長マッチ。
下は、1文字のマッチで、6回マッチして、最後のマッチが、'。'
464デフォルトの名無しさん
2018/03/01(木) 00:55:21.78ID:UkKloD3U465デフォルトの名無しさん
2018/03/01(木) 02:58:48.22ID:ksBcbegD >>462
なるほど。
なるほど。
466デフォルトの名無しさん
2018/03/01(木) 05:29:23.47ID:AobHbkwq 詳細 ○○表現
尼での評価がよかったので買ってみたが全然
リファレンスにもならない
やっぱり海外の訳本はだめだ、すくなくとも自分には良書でなかった
尼での評価がよかったので買ってみたが全然
リファレンスにもならない
やっぱり海外の訳本はだめだ、すくなくとも自分には良書でなかった
467デフォルトの名無しさん
2018/03/01(木) 15:52:15.50ID:UkKloD3U フクロウ本のことかな
中の仕組みを理解するための本であって
リファレンス本でも入門書でもないからね
中の仕組みを理解するための本であって
リファレンス本でも入門書でもないからね
468デフォルトの名無しさん
2018/03/02(金) 09:24:29.36ID:O5NS5hyG469デフォルトの名無しさん
2018/03/02(金) 13:01:46.53ID:btKfsNEv 試しに
for pat in '([cd])+' '(.)+' '.*(.)' ; do perl -Mre=debug -e '$pat = shift; print "abcd" =~ /$pat/ ,"\n" ;' "$pat" ; done
ってやってみた。最適化してそうだ。.*(.) は意味的には同じだと思うがバックトラックの分だけ不利。
Perl のソースコードを確認したわけではないので断定はしかねるが。
for pat in '([cd])+' '(.)+' '.*(.)' ; do perl -Mre=debug -e '$pat = shift; print "abcd" =~ /$pat/ ,"\n" ;' "$pat" ; done
ってやってみた。最適化してそうだ。.*(.) は意味的には同じだと思うがバックトラックの分だけ不利。
Perl のソースコードを確認したわけではないので断定はしかねるが。
470デフォルトの名無しさん
2018/03/03(土) 08:34:43.98ID:ooAwkD9v 今はサンプルだからいいけど
長大な文章じゃスキップで最適化しないとやってられないよな
長大な文章じゃスキップで最適化しないとやってられないよな
471469
2018/03/03(土) 13:47:58.16ID:GJwmn3yF 個人的には (.)+ と書くべき理由が思い当たらない。
472デフォルトの名無しさん
2018/03/04(日) 15:44:40.85ID:QUMop1Gl 正規表現とギターの速弾きが出来る奴は賢いと尊敬している
473デフォルトの名無しさん
2018/04/06(金) 19:38:34.22ID:U5C29TI1 複数のSQL文の書かれているSQLファイルから、DBの処理単位でSQL文を逐次取り出す正規表現が書きたいのですがどうしたら良いですか?
厳密なものでは無くても良くて英文字から始まってセミコロンで終わるというもので良いのです。
ただ、SQL分は行頭から始まるとは限らず、セミコロンの直後に次のSQL文が始まったり、空白文字などがあってからSQLの文が始まったりすることもあります。
また、文中に出てくるエスケープされたセミコロンや文字列中のセミコロンは文末の対象になって区切られては困るのでそれはスキップして評価がしたいです。
厳密なものでは無くても良くて英文字から始まってセミコロンで終わるというもので良いのです。
ただ、SQL分は行頭から始まるとは限らず、セミコロンの直後に次のSQL文が始まったり、空白文字などがあってからSQLの文が始まったりすることもあります。
また、文中に出てくるエスケープされたセミコロンや文字列中のセミコロンは文末の対象になって区切られては困るのでそれはスキップして評価がしたいです。
474デフォルトの名無しさん
2018/04/06(金) 22:09:42.71ID:witjIkkr 文字列の内外を判断するの難しい・・・・難しくない?
475デフォルトの名無しさん
2018/04/07(土) 12:21:20.06ID:BRhgC8GS multilineのオプション付けて
;でsplitしただけじゃだめなん
;でsplitしただけじゃだめなん
476デフォルトの名無しさん
2018/04/07(土) 12:23:00.56ID:BRhgC8GS >>474
それが含まれる時点で無理に正規表現一行で書くのはいつもあきらめる
それが含まれる時点で無理に正規表現一行で書くのはいつもあきらめる
477デフォルトの名無しさん
2018/04/07(土) 12:30:00.76ID:LBmouzwW ちゃんとやるなら文字列中のエスケープされたシングルクォートとかも処理しないとダメだし正規表現でやるのはすごく大変だと思う
478デフォルトの名無しさん
2018/04/07(土) 12:57:57.77ID:wQfk+GMe 正規文法ではかなり厳しい印象で, BNFの管轄だと思うおよね
479デフォルトの名無しさん
2018/04/08(日) 06:27:09.85ID:1mmlbc0v 1. ; で分割して、配列に入れる
2. 配列の各要素から、余分なものを削除する
2 のルールを、厳格に決めればよい
Ruby で作る方が速い
2. 配列の各要素から、余分なものを削除する
2 のルールを、厳格に決めればよい
Ruby で作る方が速い
480デフォルトの名無しさん
2018/04/08(日) 11:04:16.11ID:YK+KPtHu 正規表現は置いといて
DB用意して""で囲まれた部分をテキストとしてDBに入れながらID取得
本文側はIDに置き換える
あとは正規表現を使っても使わなくてもいいが;で分割
最後にまたID部分に元のテキストを流し込む
DB用意して""で囲まれた部分をテキストとしてDBに入れながらID取得
本文側はIDに置き換える
あとは正規表現を使っても使わなくてもいいが;で分割
最後にまたID部分に元のテキストを流し込む
481デフォルトの名無しさん
2018/04/08(日) 13:00:20.92 そこであきらめんなよ!
正規表現だけで乗り切ろうという気概を見せろよ!
正規表現だけで乗り切ろうという気概を見せろよ!
482デフォルトの名無しさん
2018/04/08(日) 13:08:05.41ID:wO4VFvVz (シングル|ダブル)クオート文字列って正規言語で表せる範囲にあるんかね?
文脈自由言語では表せるけど
文脈自由言語では表せるけど
483デフォルトの名無しさん
2018/04/08(日) 13:27:19.00ID:aPw27k7Z どの正規表現がつかえるのかがわからん
環境を明示してくれないとなー
環境を明示してくれないとなー
484デフォルトの名無しさん
2018/04/08(日) 18:18:43.83ID:1mmlbc0v /\"([^\"]*)\"/ =~ 'a"bc"d'
$1 #=> bc
"〜" で、〜には、" 以外の文字列が入る
$1 #=> bc
"〜" で、〜には、" 以外の文字列が入る
485デフォルトの名無しさん
2018/04/08(日) 18:28:48.48ID:aPw27k7Z "のエスケープや'もあるし
'a"b\"c'd"e'
'a"b\"c'd"e'
486473
2018/04/09(月) 10:33:55.69ID:Q+cYQrXX 沢山ご回答ありがとうございます。
皆さんのご意見を伺った限り、やはり正規表現一本では難しそうですよね…
はじめは前処理で既成のsqlパーサなどを通して、きれいに整形して別ファイルに保存してから処理する方法も検討していましたが、
できれば現物ファイルを生のまま読み込んで正規表現でなんとか行けないかなと思い試行錯誤していて、
うまい書き方が全然できなくてここに書き込みさせて頂いた次第です。
>>483
使用できる正規表現はPCREです。
具体的にはPHPで省メモリで巨大なSQLファイルを実行する仕組みが作りたくて
相談させてもらいました。自分の頭の中のアイデアでは
1.fileをbufsize分readして
2.正規表現でマッチするかチェック
3.マッチしていたらそのSQLを実行。マッチした文より、先の部分は次の実行のためにバッファに積んで1へもどる
4.マッチしていない場合は更にbufsize分read、2->4を繰り返す。
こんなイメージでした。
それを鑑みると、>>480さんのアイデアはちょっとありかなとも思います。
スレ違いなっちゃいますが、regexを使わずプログラム上でクオートの始まりと終わりを正しく
処理できれば随分楽できそうな気がします。一考の余地ありですかね?
皆さんのご意見を伺った限り、やはり正規表現一本では難しそうですよね…
はじめは前処理で既成のsqlパーサなどを通して、きれいに整形して別ファイルに保存してから処理する方法も検討していましたが、
できれば現物ファイルを生のまま読み込んで正規表現でなんとか行けないかなと思い試行錯誤していて、
うまい書き方が全然できなくてここに書き込みさせて頂いた次第です。
>>483
使用できる正規表現はPCREです。
具体的にはPHPで省メモリで巨大なSQLファイルを実行する仕組みが作りたくて
相談させてもらいました。自分の頭の中のアイデアでは
1.fileをbufsize分readして
2.正規表現でマッチするかチェック
3.マッチしていたらそのSQLを実行。マッチした文より、先の部分は次の実行のためにバッファに積んで1へもどる
4.マッチしていない場合は更にbufsize分read、2->4を繰り返す。
こんなイメージでした。
それを鑑みると、>>480さんのアイデアはちょっとありかなとも思います。
スレ違いなっちゃいますが、regexを使わずプログラム上でクオートの始まりと終わりを正しく
処理できれば随分楽できそうな気がします。一考の余地ありですかね?
487デフォルトの名無しさん
2018/04/09(月) 12:10:15.13ID:M/BmQ9Z1 "'", "\""
'"', '\''
クォーテーション内にクォーテーションがある、入れ子状態が難しい。
クォーテーションを、\ でエスケープしたりもあるし
XML Parser とか、プログラム実行の命令木とか、解析ツールを使わないと無理。
プログラミングで何とかできる、範囲を超えている
そもそも、入れ子状態にどういうパターンがあるのか、
全列挙して考えるのが、非常に難しい
入れ子の入れ子とか、再帰的に入れ子するかも知れないし
'"', '\''
クォーテーション内にクォーテーションがある、入れ子状態が難しい。
クォーテーションを、\ でエスケープしたりもあるし
XML Parser とか、プログラム実行の命令木とか、解析ツールを使わないと無理。
プログラミングで何とかできる、範囲を超えている
そもそも、入れ子状態にどういうパターンがあるのか、
全列挙して考えるのが、非常に難しい
入れ子の入れ子とか、再帰的に入れ子するかも知れないし
488デフォルトの名無しさん
2018/04/09(月) 17:17:14.98ID:4vJW9Ikj >>486
こういう感じでどうだろう
[a-zA-Z](?:\\"|\\'|[^"';]|(["'])(?:\\\1|(?:(?!\1).))*(?<!\\)\1)*;
英数字で始まって、\"や\'は許す;で終わる文字列
頭に^\s*を付けたほうがいいかもしれないけど
文字列は、" ' "、' " '、" \" "、' \' 'は許す( ; もOK)
ところで、" ' " ' "とは書けるんだっけ?
こういう括弧のネストが可能なら、正規表現の方もネスト構文や条件構文を使わないといけないけど
(俺は使ったことはないけど)
こういう感じでどうだろう
[a-zA-Z](?:\\"|\\'|[^"';]|(["'])(?:\\\1|(?:(?!\1).))*(?<!\\)\1)*;
英数字で始まって、\"や\'は許す;で終わる文字列
頭に^\s*を付けたほうがいいかもしれないけど
文字列は、" ' "、' " '、" \" "、' \' 'は許す( ; もOK)
ところで、" ' " ' "とは書けるんだっけ?
こういう括弧のネストが可能なら、正規表現の方もネスト構文や条件構文を使わないといけないけど
(俺は使ったことはないけど)
489デフォルトの名無しさん
2018/04/09(月) 17:44:25.66ID:4vJW9Ikj ただし↑は、コメント文はないものとしてのこと
490デフォルトの名無しさん
2018/04/09(月) 19:00:46.18ID:4vJW9Ikj さっそくダメだった
"\\"
"\\"
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【サッカー】U-17日本代表、激闘PK戦制す 北朝鮮撃破で6大会ぶり8強入り U17W杯 [久太郎★]
- 「国民の憤りを引き起こした」中国側“高市首相発言の撤回改めて要求” [どどん★]
- 【インバウンド】中国からの“渡航自粛”…ツアー1000人分の直前キャンセル「キャンセル料は免除してくれ」 ことしいっぱいキャンセルに [1ゲットロボ★]
- 【芸能】日中関係悪化でエンタメ業界に大ダメージ… JO1の中国でのイベント中止、邦画は公開延期、STARTOアイドルへの影響も [冬月記者★]
- XやChatGPTで広範囲の通信障害 投稿や閲覧できず [蚤の市★]
- 【サッカー】日本代表、ボリビアに3発快勝 森保監督通算100試合目を飾る…鎌田、町野、中村がゴール [久太郎★]
- Perfume・あ~ちゃんの結婚相手の一般男性、吉田カバンの社長と判明 [977261419]
- AIアーティストだけど作品公開する
- 地球から無限km先の場所ってどうなっているの?
- お前らインターネット大規模障害起きてたとき何してた
- 自民党議員「高市は先人が築き上げた日中関係を壊した。外務省が謝罪に言ってるが自分で責任を取れ」 [834922174]
- 日本、高市のお陰で破滅に近づくwwwwwwww
