Regular Expressionスレです。
質問する場合は必ず実装言語や処理系ソフトウェア名を示してください。
前スレ
Regular Expression(正規表現) Part14
https://mevius.5ch.net/test/read.cgi/tech/1489511075/
次スレは>>980宜しく
天ぷら等>>2以降
Regular Expression(正規表現) Part15
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2019/09/16(月) 22:25:11.87ID:enU8we0d226デフォルトの名無しさん
2020/05/29(金) 12:20:15.31ID:KLwVXlC+ どっちでもいいってどういう場合だ
どっちかになるだろ
どっちかになるだろ
227224
2020/05/29(金) 13:19:30.03ID:YZO921+1 例えば対象が1回以上の繰り返しだとします
0回以上には1回以上が含まれているのだから、どちらかが適切であるという積極的な理由が見つかりません
0回以上には1回以上が含まれているのだから、どちらかが適切であるという積極的な理由が見つかりません
228デフォルトの名無しさん
2020/05/29(金) 13:22:19.49ID:KLwVXlC+ 一つも無くていいってのと一つは必ず無いといけないってのは両立する場面は無い
229デフォルトの名無しさん
2020/05/29(金) 13:27:35.99ID:zvuAHZcb 「1回以上」ならつべこべ言わずに"+"だな
「0回は外したい」という意味を含むのであれば
"*"は仕様から外れる
個人的には"*"はできるだけ使わない
「0回は外したい」という意味を含むのであれば
"*"は仕様から外れる
個人的には"*"はできるだけ使わない
230デフォルトの名無しさん
2020/05/29(金) 15:05:09.67ID:IKIHl4j2 1回以上であることが分かっているのであれば0回の可能性がないことを示しておけるというのが合理的理由だよ。
*でマッチさせられるとしても後からソース見て混乱するだけだ。慣例といえば慣例だが機能すればいいというものでもない。
*でマッチさせられるとしても後からソース見て混乱するだけだ。慣例といえば慣例だが機能すればいいというものでもない。
231デフォルトの名無しさん
2020/05/29(金) 19:24:39.89ID:ZvrYTh83 >>227
読む人(未来の自分含む)のことを考えれば、可能な限り対象を絞り込んだ方が(設計意図が読み取りやすくて)よい
読む人(未来の自分含む)のことを考えれば、可能な限り対象を絞り込んだ方が(設計意図が読み取りやすくて)よい
232デフォルトの名無しさん
2020/05/29(金) 21:22:17.43ID:VNOYZXTT A+とAA*の効率化の話かと思った
AA*の方が最初のAで最適化される分だけ速いとかなんとか
AA*の方が最初のAで最適化される分だけ速いとかなんとか
233デフォルトの名無しさん
2020/05/29(金) 21:49:09.90ID:dZOo8Hm0 >>232
オートマトンを組むので速度は変わらないと思うが
オートマトンを組むので速度は変わらないと思うが
234デフォルトの名無しさん
2020/06/18(木) 21:13:18.22ID:jAvldfC1 https://i.imgur.com/ngqWoOX.jpg
上を下としたいのですが、2回に分けることは可能ですが、1回でやれますでしょうか?スラッシュが含まれる場合、そこをエスケープしたいのです
scriptタグ貼ると怒られますので、画像です(´・ω・`)、、、
上を下としたいのですが、2回に分けることは可能ですが、1回でやれますでしょうか?スラッシュが含まれる場合、そこをエスケープしたいのです
scriptタグ貼ると怒られますので、画像です(´・ω・`)、、、
235デフォルトの名無しさん
2020/06/18(木) 22:17:30.24ID:3QD4/INi >>234
正規表現: (<([^>]+)>[^<]*<)(/\2>)
置換 : "$1\$3"
正規表現: (<([^>]+)>[^<]*<)(/\2>)
置換 : "$1\$3"
236デフォルトの名無しさん
2020/06/18(木) 22:21:10.54ID:3QD4/INi 環境によっては
置換: "$1\\$3"
としないとダメなこともあり
置換: "$1\\$3"
としないとダメなこともあり
237デフォルトの名無しさん
2020/06/18(木) 22:28:45.36ID:3QD4/INi238デフォルトの名無しさん
2020/06/18(木) 22:37:34.06ID:G7fdNfOT <スクリプト>(ここが変化)</スクリプト>
って感じでスクリプトとスクリプトの間が変化するだけじゃない?
って感じでスクリプトとスクリプトの間が変化するだけじゃない?
239デフォルトの名無しさん
2020/06/18(木) 22:42:36.83ID:L9lBZl+g 間があるのなら通常1行ではないだろう
240デフォルトの名無しさん
2020/06/18(木) 22:48:48.44ID:kZOKQ/+u <script>([^\b]*?)</script>
"<script>\1<\\/script>"
"<script>\1<\\/script>"
241デフォルトの名無しさん
2020/06/19(金) 02:59:23.82ID:yAdMpEG/ 厚生労働省がガイドラインを発表…「副業」公認の時代が来た?
https://www.iza.ne.jp/kiji/economy/news/200516/ecn20051620000005-n1.html
フリーランス向け報酬即日払いサービス『先払い』受付開始7ヶ月で申込件数1,000件突破
https://prtimes.jp/main/html/rd/p/000000026.000047439.html
副業プラットフォーム「Kasooku」が約1.9億円調達、マッチング件数は5000件突破
https://jp.techcrunch.com/2020/04/30/kasooku-fundraising/
副業がしやすくなった?リモートワークを実施してよかったと思うことTOP5
https://dime.jp/genre/914967/
ポストコロナ時代の人生に副業は欠かせない
https://www.gentosha.jp/article/15457/
副業が社員を強くする コロナ・ショックが加速する新しい雇用の形
https://business.nikkei.com/atcl/gen/19/00149/042300009/
4割以上が「副業意欲向上」「副業しやすくなった」と変化|
新型コロナウイルスの影響下における働き方の実態・意識調査
https://prtimes.jp/main/html/rd/p/000000009.000040832.html
https://www.iza.ne.jp/kiji/economy/news/200516/ecn20051620000005-n1.html
フリーランス向け報酬即日払いサービス『先払い』受付開始7ヶ月で申込件数1,000件突破
https://prtimes.jp/main/html/rd/p/000000026.000047439.html
副業プラットフォーム「Kasooku」が約1.9億円調達、マッチング件数は5000件突破
https://jp.techcrunch.com/2020/04/30/kasooku-fundraising/
副業がしやすくなった?リモートワークを実施してよかったと思うことTOP5
https://dime.jp/genre/914967/
ポストコロナ時代の人生に副業は欠かせない
https://www.gentosha.jp/article/15457/
副業が社員を強くする コロナ・ショックが加速する新しい雇用の形
https://business.nikkei.com/atcl/gen/19/00149/042300009/
4割以上が「副業意欲向上」「副業しやすくなった」と変化|
新型コロナウイルスの影響下における働き方の実態・意識調査
https://prtimes.jp/main/html/rd/p/000000009.000040832.html
242デフォルトの名無しさん
2020/06/19(金) 05:44:59.40ID:LA4wBl0H243デフォルトの名無しさん
2020/06/19(金) 07:43:33.01ID:b4DLgcmt244デフォルトの名無しさん
2020/06/19(金) 10:22:50.49ID:ecFmQJtB 鬼雲
(?<!")(<([^>\s]++).*?>[^\b]*?<)(/\2>)(?!")
"\1\\\3"
制限
ネストの回数分、全置換の繰り返しが必要
<div id=a><div id=b>test</div></div> こういうのも行けるが
id=aの開始タグとid=bの終了タグの組み合わせで置換され次にid=bの始、id=aの終で処理される
<div id=a>"abc"<div id=b>test</div>"def"</div> タグの外側直近に"があるものは否定(先|戻り)読みで"を見ているので無理
(?<!")(<([^>\s]++).*?>[^\b]*?<)(/\2>)(?!")
"\1\\\3"
制限
ネストの回数分、全置換の繰り返しが必要
<div id=a><div id=b>test</div></div> こういうのも行けるが
id=aの開始タグとid=bの終了タグの組み合わせで置換され次にid=bの始、id=aの終で処理される
<div id=a>"abc"<div id=b>test</div>"def"</div> タグの外側直近に"があるものは否定(先|戻り)読みで"を見ているので無理
245デフォルトの名無しさん
2020/06/19(金) 11:06:15.25ID:LA4wBl0H ●Regular Expressionの使用環境
mery2.6.7です
●検索か置換か?
置き換えしたいです
●説明
先頭と行頭に"を追加し、/をエスケープしたいです
●対象データ
https://ideone.com/mNblKp
>>243
了解です
直しました
複数回に分けてやるのが普通なんでしょうか?
mery2.6.7です
●検索か置換か?
置き換えしたいです
●説明
先頭と行頭に"を追加し、/をエスケープしたいです
●対象データ
https://ideone.com/mNblKp
>>243
了解です
直しました
複数回に分けてやるのが普通なんでしょうか?
246デフォルトの名無しさん
2020/06/19(金) 11:47:09.20ID:x+g7YIVM >>245
これダブルクォーテーションもエスケープしなきゃいけないんじゃないの?
これダブルクォーテーションもエスケープしなきゃいけないんじゃないの?
247デフォルトの名無しさん
2020/06/19(金) 12:02:33.17ID:LA4wBl0H >>246
すみません、勘違いしていました
エスケープ対象は"で、/はエスケープ対象ではないです。
vscodeのスニペットに登録する際に、"をエスケープしないといけないんです
これ、なにげに面倒ですね
すみません、勘違いしていました
エスケープ対象は"で、/はエスケープ対象ではないです。
vscodeのスニペットに登録する際に、"をエスケープしないといけないんです
これ、なにげに面倒ですね
248デフォルトの名無しさん
2020/06/19(金) 14:19:20.57ID:a2rlVyD0 >>247
HTMLが一般的ではないんだけど
通常はタグと閉じタグとが別の行になることが多いし
あるいは全てが一行というものもあるんだけど
こんな特殊なものにだけ対応でいいのか?
また各タグ毎に""だとダメなのか?
こうすれば行が違ってても大丈夫となるけど
【例】 <h1>h1</h1> → "<h1>"h1"</h1>"
HTMLが一般的ではないんだけど
通常はタグと閉じタグとが別の行になることが多いし
あるいは全てが一行というものもあるんだけど
こんな特殊なものにだけ対応でいいのか?
また各タグ毎に""だとダメなのか?
こうすれば行が違ってても大丈夫となるけど
【例】 <h1>h1</h1> → "<h1>"h1"</h1>"
249デフォルトの名無しさん
2020/06/19(金) 16:14:22.39ID:/6wBUF7o 自分macなのでmery使えないの試せない
javascriptのマクロが使えるみたいじゃん
正規表現だけだと厳しいかも
var code =`<!DOCTYPE html> 〜省略〜 </html>`
var code = code.replace(/(<.*?>)\n/g, '"$1"\n').replace(/\//g, '\\\/')
console.log(code)
javascriptの置き換え部分だけ書くと上のでいけるはず
meryのマクロの体裁に整えればこれでいけると思う
環境によって\はバックスラッシュだし$もバックスラッシュです
javascriptのマクロが使えるみたいじゃん
正規表現だけだと厳しいかも
var code =`<!DOCTYPE html> 〜省略〜 </html>`
var code = code.replace(/(<.*?>)\n/g, '"$1"\n').replace(/\//g, '\\\/')
console.log(code)
javascriptの置き換え部分だけ書くと上のでいけるはず
meryのマクロの体裁に整えればこれでいけると思う
環境によって\はバックスラッシュだし$もバックスラッシュです
250デフォルトの名無しさん
2020/06/19(金) 16:33:24.58ID:x+g7YIVM var2回もいらんし。
¥nは$にしないとそのスクリプト自体動作失敗してるでしょ。
¥nは$にしないとそのスクリプト自体動作失敗してるでしょ。
251デフォルトの名無しさん
2020/06/19(金) 16:45:53.57ID:/6wBUF7o >¥nは$にしないと
へえそうなんだ
macだとそのままいけるんだよね
var 2回いらねはさすがに難癖だね
へえそうなんだ
macだとそのままいけるんだよね
var 2回いらねはさすがに難癖だね
252デフォルトの名無しさん
2020/06/19(金) 16:49:07.22ID:LA4wBl0H >>248
vscodeのスニペット登録はそういうルールのようです
やはり複数回に分けるのが利口でしょうか
プログラムだって何回かに処理を分けますもんね
必須ではないですが、知識として知りたいなあと思った次第です
vscodeのスニペット登録はそういうルールのようです
やはり複数回に分けるのが利口でしょうか
プログラムだって何回かに処理を分けますもんね
必須ではないですが、知識として知りたいなあと思った次第です
253デフォルトの名無しさん
2020/06/19(金) 17:06:56.57ID:x+g7YIVM254デフォルトの名無しさん
2020/06/19(金) 18:05:26.45ID:LA4wBl0H >>249
自分はpythonでやってみますです
自分はpythonでやってみますです
255デフォルトの名無しさん
2020/06/19(金) 18:07:51.43ID:a2rlVyD0 ひょっとするけど
タグ関係なく単に各行を""で括るってだけなんじゃ?
タグ関係なく単に各行を""で括るってだけなんじゃ?
256デフォルトの名無しさん
2020/06/19(金) 18:24:29.90ID:a2rlVyD0 スニペット登録でググってみたら
jsonで記述と書かれてる
やっぱりタグは無関係で
行の前後を""で括るだけだし、カンマ区切りも要る
"Inner": {
"prefix": "in",
"body": [
"<section id=\"$1\">",
"\t<div class=\"inner\">",
"\t\t$2",
"\t</div><!-- .inner -->",
"</section>"
],
},
jsonで記述と書かれてる
やっぱりタグは無関係で
行の前後を""で括るだけだし、カンマ区切りも要る
"Inner": {
"prefix": "in",
"body": [
"<section id=\"$1\">",
"\t<div class=\"inner\">",
"\t\t$2",
"\t</div><!-- .inner -->",
"</section>"
],
},
257デフォルトの名無しさん
2020/06/19(金) 18:36:21.20ID:LA4wBl0H え、そうなのですか、、、
258デフォルトの名無しさん
2020/06/19(金) 18:57:56.53ID:a2rlVyD0 そもそもキー入力の短縮だし、基本はテンプレート登録だ
"Print to console": {
"prefix": "log",
"body": [
"console.log('$1');",
"$2"
],
"description": "Log output to console"
あと、スニペット登録入力用のvscode拡張機能もあるようだ
"Print to console": {
"prefix": "log",
"body": [
"console.log('$1');",
"$2"
],
"description": "Log output to console"
あと、スニペット登録入力用のvscode拡張機能もあるようだ
259デフォルトの名無しさん
2020/06/19(金) 21:44:28.86ID:q14TQ9ke ggrks
https://www.google.com/search?q=vscode スニペット 登録 拡張
https://www.google.com/search?q=vscode スニペット 登録 拡張
260デフォルトの名無しさん
2020/06/20(土) 00:03:50.12ID:D9McnEc6 #一行目
AAAランダム文字列1AAAランダム文字列2BBBランダム文字列3BBBランダム文字列4CCC
#二行目
AAAランダム文字列5BBB
このような文章があって
AAAランダム文字列2BBB
だけを1回の処理で抽出することは可能ですかね?
AAA〜CCCで挟まれ、かつAAA〜BBBの真の最短マッチというのでしょうか
二行目は抽出したくないです
AAA((?!AAA).)*CCC
↓
AAA((?!AAA|BBB).)*BBB
と2回の処理ではできたのですがどうも悔しいです
AAAランダム文字列1AAAランダム文字列2BBBランダム文字列3BBBランダム文字列4CCC
#二行目
AAAランダム文字列5BBB
このような文章があって
AAAランダム文字列2BBB
だけを1回の処理で抽出することは可能ですかね?
AAA〜CCCで挟まれ、かつAAA〜BBBの真の最短マッチというのでしょうか
二行目は抽出したくないです
AAA((?!AAA).)*CCC
↓
AAA((?!AAA|BBB).)*BBB
と2回の処理ではできたのですがどうも悔しいです
261デフォルトの名無しさん
2020/06/20(土) 00:10:55.64ID:GUrzgoSo >>260
AAA.*(AAA.*?BBB).*CCC
AAA.*(AAA.*?BBB).*CCC
262デフォルトの名無しさん
2020/06/20(土) 00:29:48.90ID:Spmc6WsU ランダム文字列の最初(最後)の文字がA(B)だった時は?
263デフォルトの名無しさん
2020/06/20(土) 00:44:31.03ID:Spmc6WsU264デフォルトの名無しさん
2020/06/20(土) 00:44:59.32ID:Spmc6WsU 誤爆スマン
265デフォルトの名無しさん
2020/06/20(土) 00:52:46.51ID:D9McnEc6266デフォルトの名無しさん
2020/06/20(土) 02:01:55.18ID:GUrzgoSo >>265
それは正規表現の問題じゃなくgrepの使い方の問題で
キャプチャグループを取り出せてないだけだと思う
pcregrep -o1 'AAA.*?(AAA.*?BBB).*CCC' <input>
とか
grep -oP 'AAA.*?¥K(AAA.*?BBB)(?=.*?CCC)' <input>
とか工夫して
それは正規表現の問題じゃなくgrepの使い方の問題で
キャプチャグループを取り出せてないだけだと思う
pcregrep -o1 'AAA.*?(AAA.*?BBB).*CCC' <input>
とか
grep -oP 'AAA.*?¥K(AAA.*?BBB)(?=.*?CCC)' <input>
とか工夫して
267デフォルトの名無しさん
2020/06/20(土) 02:35:31.58ID:D9McnEc6268デフォルトの名無しさん
2020/06/21(日) 11:54:44.04ID:RSezRE5h マークダウンのマッチのさせ方について
この2つのうち、上だけをマッチさせたいです
#半角スペースh1
#半角スペース半角スペース半角スペースh1
しかし
^# .*$
だと、両方マッチします。半角スペースが1つの場合のみマッチさせられるでしょうか
この2つのうち、上だけをマッチさせたいです
#半角スペースh1
#半角スペース半角スペース半角スペースh1
しかし
^# .*$
だと、両方マッチします。半角スペースが1つの場合のみマッチさせられるでしょうか
269デフォルトの名無しさん
2020/06/21(日) 12:19:16.08ID:1s00JmZm ^# [^ ]
270デフォルトの名無しさん
2020/06/21(日) 14:46:34.76ID:RSezRE5h ありがとうございます
# h
の部分だけマッチします
一文字の繰り返しの部分は、どう指定してるんでしょうか?
# h
の部分だけマッチします
一文字の繰り返しの部分は、どう指定してるんでしょうか?
271デフォルトの名無しさん
2020/06/21(日) 14:58:06.74ID:wEwARBW2 [^ ]+
272デフォルトの名無しさん
2020/06/21(日) 15:46:15.97ID:RSezRE5h だとスペースがマッチしません
ありがとうございます
ありがとうございます
273デフォルトの名無しさん
2020/06/21(日) 16:11:36.93ID:1s00JmZm274デフォルトの名無しさん
2020/06/21(日) 18:30:44.16ID:RSezRE5h ^#[ ]([^ ].*)$
これでいけたブリ
これでいけたブリ
275デフォルトの名無しさん
2020/06/27(土) 20:14:07.00ID:V+005EHj276デフォルトの名無しさん
2020/06/28(日) 00:20:52.36ID:x4PVBa+w chmateとやらのスレで聞いた方がいいと思うが
277デフォルトの名無しさん
2020/06/28(日) 20:47:34.83ID:hqGvkXPW わかる方教えてください
yyyy/mm/dd の形式で、下記のような0埋め処理をしたいのですが、一発処理方法がわかりません
大量にあるファイルを秀丸にてgrep置換予定です。空白がジャマすぐる
今後も処理の必要があるので、できれば一発、無理なら2周かな…
ex.) 2020/ 6/ 1 ⇒ 2020/06/01
([0-9]{4})/( [0-9]|[0-9]{2})/( [0-9]|[0-9]{2})
これで全条件拾えるが処理できないし、下記だと3周しないといけないし
([0-9]{4})/ ([0-9])/([0-9]{2}) ⇒ \1/0\2/\3 //月のみ1桁
([0-9]{4})/([0-9]{2})/ ([0-9]) ⇒ \1/\2/0\3 //日のみ1桁
([0-9]{4})/ ([0-9])/ ([0-9]) ⇒ \1/0\2/0\3 //両方1桁
どなたか、お願いしますm(_ _)m
yyyy/mm/dd の形式で、下記のような0埋め処理をしたいのですが、一発処理方法がわかりません
大量にあるファイルを秀丸にてgrep置換予定です。空白がジャマすぐる
今後も処理の必要があるので、できれば一発、無理なら2周かな…
ex.) 2020/ 6/ 1 ⇒ 2020/06/01
([0-9]{4})/( [0-9]|[0-9]{2})/( [0-9]|[0-9]{2})
これで全条件拾えるが処理できないし、下記だと3周しないといけないし
([0-9]{4})/ ([0-9])/([0-9]{2}) ⇒ \1/0\2/\3 //月のみ1桁
([0-9]{4})/([0-9]{2})/ ([0-9]) ⇒ \1/\2/0\3 //日のみ1桁
([0-9]{4})/ ([0-9])/ ([0-9]) ⇒ \1/0\2/0\3 //両方1桁
どなたか、お願いしますm(_ _)m
278デフォルトの名無しさん
2020/06/28(日) 22:32:55.02ID:pbfRuAan > 大量にあるファイルを
> 今後も処理の必要がある
スクリプトでやるものじゃね?
以下で2週で出来るが秀丸の正規表現は知らんからヒントにでもして
(?<=\d{4}/) (?=\d/[\d ]\d)
0
(?<=\d{4}/\d\d/) (?=\d)
0
(先|戻り)読みが使えないなら
(\d{4})/ (\d/[\d ]\d)
\1/0\2
(\d{4}/\d\d)/ (\d)
\1/0\2
> 今後も処理の必要がある
スクリプトでやるものじゃね?
以下で2週で出来るが秀丸の正規表現は知らんからヒントにでもして
(?<=\d{4}/) (?=\d/[\d ]\d)
0
(?<=\d{4}/\d\d/) (?=\d)
0
(先|戻り)読みが使えないなら
(\d{4})/ (\d/[\d ]\d)
\1/0\2
(\d{4}/\d\d)/ (\d)
\1/0\2
279デフォルトの名無しさん
2020/06/28(日) 22:57:55.61ID:CZLL+74z >>277
秀丸は使えないのでうまくいくかは不明だが
検索文字列:\d{4}/\K (?=\d/(?:\d\d\D| \d\D))|\d{4}/\d\d/\K (?=\d\D)|\G\d{1,2}/\K (?=\d\D)
置換文字列:0
\Kがダメなら、(?<=\d{4}/)とかに変えてみる(3箇所)
ただし誤爆は起きるかもしれない
秀丸は使えないのでうまくいくかは不明だが
検索文字列:\d{4}/\K (?=\d/(?:\d\d\D| \d\D))|\d{4}/\d\d/\K (?=\d\D)|\G\d{1,2}/\K (?=\d\D)
置換文字列:0
\Kがダメなら、(?<=\d{4}/)とかに変えてみる(3箇所)
ただし誤爆は起きるかもしれない
280デフォルトの名無しさん
2020/06/28(日) 23:14:26.22ID:CZLL+74z なお誤爆の可能性は、
1) ファイル先頭に、 6/28 xxx で始まっていた場合
2) 2020/ 6/28/ 9 xxx とか引き続き/ 9とかがある場合
3)ファイル末尾で、2020/ 6/28(改行コードなし)で終わっている場合は変換されない
まあ改良すれば3)は問題なくなるけど
1) ファイル先頭に、 6/28 xxx で始まっていた場合
2) 2020/ 6/28/ 9 xxx とか引き続き/ 9とかがある場合
3)ファイル末尾で、2020/ 6/28(改行コードなし)で終わっている場合は変換されない
まあ改良すれば3)は問題なくなるけど
281デフォルトの名無しさん
2020/06/28(日) 23:16:24.29ID:CZLL+74z 2)は間違い 2020/ 6/ 8/ 9 とかの場合に訂正
282デフォルトの名無しさん
2020/06/28(日) 23:19:24.85ID:CZLL+74z あ、1)も間違ってる
6/ 8 xxxに訂正(空白なしで数字1文字で始まる場合)
6/ 8 xxxに訂正(空白なしで数字1文字で始まる場合)
283デフォルトの名無しさん
2020/06/29(月) 00:31:06.80ID:G5zcTgI1 秀丸なら普通にマクロでプログラム書いた方が楽じゃない?
284デフォルトの名無しさん
2020/06/29(月) 00:32:15.99ID:1iNHQcBG 1)は、\G(?!^)というふうに先頭の場合を除けばいける
残りの2)3)は工夫次第
残りの2)3)は工夫次第
285デフォルトの名無しさん
2020/06/29(月) 16:30:01.33ID:sN5cgPC+ 難しく考えなくても置換対象以外に"/ "が無いなら
/[ ]
/0
で一発
/[ ]
/0
で一発
286デフォルトの名無しさん
2020/06/29(月) 16:59:50.16ID:0ldK0o0F これでできないかい?
FIND:(?<=¥d{4}/[ ¥d]¥d/) (¥d)|(?<=¥d{4}/) (¥d)(?=/)
REP:0$1$2
FIND:(?<=¥d{4}/[ ¥d]¥d/) (¥d)|(?<=¥d{4}/) (¥d)(?=/)
REP:0$1$2
287デフォルトの名無しさん
2020/06/29(月) 17:05:41.11ID:0ldK0o0F こっちのほうが確実か。
FIND:(?<=¥d{4}/) (¥d)(?=/[ ¥d]¥d)|(?<=¥d{4}/[ ¥d]¥d/) (¥d)
REP:0$1$2
FIND:(?<=¥d{4}/) (¥d)(?=/[ ¥d]¥d)|(?<=¥d{4}/[ ¥d]¥d/) (¥d)
REP:0$1$2
288デフォルトの名無しさん
2020/06/29(月) 17:28:03.91ID:sN5cgPC+289デフォルトの名無しさん
2020/06/29(月) 17:41:18.50ID:0ldK0o0F290デフォルトの名無しさん
2020/06/29(月) 17:54:20.25ID:TUm10+y/ 277 です
皆さんありがとうございます!
レベルが低くて理解できないのもありますが、勉強のためにしっかり精査してみます
>>285
まさにそれですわ
てゆーか別に正規表現使わなくても実現できるという罠
勉強になりました m(_ _)m
改めましてありがとうございました。
皆さんありがとうございます!
レベルが低くて理解できないのもありますが、勉強のためにしっかり精査してみます
>>285
まさにそれですわ
てゆーか別に正規表現使わなくても実現できるという罠
勉強になりました m(_ _)m
改めましてありがとうございました。
291デフォルトの名無しさん
2020/06/29(月) 18:05:49.23ID:sN5cgPC+292デフォルトの名無しさん
2020/06/29(月) 18:09:28.38ID:0ldK0o0F293デフォルトの名無しさん
2020/06/29(月) 18:13:56.28ID:sN5cgPC+294デフォルトの名無しさん
2020/06/29(月) 18:25:35.41ID:sN5cgPC+295デフォルトの名無しさん
2020/06/29(月) 23:31:59.63ID:G5zcTgI1 質問者そっちのけの場外乱闘にワロタ
296デフォルトの名無しさん
2020/06/30(火) 01:41:09.48ID:ZFF7tVch だが、そこがいい
297デフォルトの名無しさん
2020/06/30(火) 13:15:03.17ID:tIigavUn >>279で\Gの使い方が分かった。thx
298デフォルトの名無しさん
2020/07/02(木) 02:54:39.72ID:fxvoVb8t アプリからファイアウォールにまで使われる正規表現を標的にした「ReDoS攻撃」とは?
https://gigazine.net/news/20200701-redos-cheet-sheet/
ネット中は正規表現を使わないではだめなのか
でもブラウザも中で使っているだろうし
https://gigazine.net/news/20200701-redos-cheet-sheet/
ネット中は正規表現を使わないではだめなのか
でもブラウザも中で使っているだろうし
299デフォルトの名無しさん
2020/07/03(金) 10:38:52.53ID:fe+b4Rno 正規表現についてですが、このhtmlの置き換えは一発でできますか?
この前からいろいろ試してるんですが、、
https://ideone.com/vpxoNS
行頭と行末にダブルクォーテーションをつけ、urlの部分はエスケープしています。
vscodeでスニペットを登録する際に、このようにダブルクオーテーションを使用する必要があるのです。
この前からいろいろ試してるんですが、、
https://ideone.com/vpxoNS
行頭と行末にダブルクォーテーションをつけ、urlの部分はエスケープしています。
vscodeでスニペットを登録する際に、このようにダブルクオーテーションを使用する必要があるのです。
300デフォルトの名無しさん
2020/07/03(金) 11:07:40.28ID:cg7dcvev (^<.*?)(".*?)(".*>)$
"$1¥¥$2¥¥$3"
↑vscode内の検索置換
それと全く同じパターンであれば可能だが、dqが複数出てくる場合はできない。
他のパターンも考えたら、
1.dqのみエスケープ、
2.行頭行末にdqをつける
の2アクションにするか、vscodeでそれ用のjsでも書いて処理するか。
スニペット登録したいものをまとめて書き出しておいて2アクションで処理しても大して手間は変わらんだろ。
"$1¥¥$2¥¥$3"
↑vscode内の検索置換
それと全く同じパターンであれば可能だが、dqが複数出てくる場合はできない。
他のパターンも考えたら、
1.dqのみエスケープ、
2.行頭行末にdqをつける
の2アクションにするか、vscodeでそれ用のjsでも書いて処理するか。
スニペット登録したいものをまとめて書き出しておいて2アクションで処理しても大して手間は変わらんだろ。
301デフォルトの名無しさん
2020/07/03(金) 12:32:41.29ID:fe+b4Rno そうですね 2回でやります
302デフォルトの名無しさん
2020/07/03(金) 13:00:37.53ID:hVBUXcHj Ruby で、" を、\" に置換してから、
冒頭・末尾に、" を追加する
str = '"ja"'
str.gsub!( '"', '\"' )
puts '"' + str + '"'
#=> "\"ja\""
冒頭・末尾に、" を追加する
str = '"ja"'
str.gsub!( '"', '\"' )
puts '"' + str + '"'
#=> "\"ja\""
303デフォルトの名無しさん
2020/07/03(金) 13:11:32.91ID:yfao6bm4 VScodeのプラグインにSnippet Generatorてのがあるみたいだがそれじゃダメなん?
304302
2020/07/03(金) 14:28:11.33ID:hVBUXcHj 漏れなら、Ruby, PowerShell で、
クリップボード経由で変換するスクリプトを書いて、
ダブルクリックで起動できるように、起動部分をVBS で書くかな?
クリップボード経由で変換するスクリプトを書いて、
ダブルクリックで起動できるように、起動部分をVBS で書くかな?
305デフォルトの名無しさん
2020/07/03(金) 14:33:24.34ID:zEGBQA4b 正規表現よりもJSON.strinfigy()を使ったほうが簡単
スニペット用のJSONを出力すればいいだけだからJSでもRubyでも好きなの使えばいい
スニペット用のJSONを出力すればいいだけだからJSでもRubyでも好きなの使えばいい
306デフォルトの名無しさん
2020/07/13(月) 00:17:50.71ID:e/I4Ji0p JavaScript
const kaoru = '薫'
'[薫子]'.match(`[${kaoru}]`)
'[薫子]'.match(`\[${kaoru}\]`)
'[薫子]'.match(new RegExp(`[${kaoru}]`))
'[薫子]'.match(new RegExp(`\[${kaoru}\]`))
全てマッチしてしまうようですが、マッチさせたくありません
[ や ] そのものを文字として扱って判定するにはmatchの引数をどうすればよいでしょうか
const kaoru = '薫'
'[薫子]'.match(`[${kaoru}]`)
'[薫子]'.match(`\[${kaoru}\]`)
'[薫子]'.match(new RegExp(`[${kaoru}]`))
'[薫子]'.match(new RegExp(`\[${kaoru}\]`))
全てマッチしてしまうようですが、マッチさせたくありません
[ や ] そのものを文字として扱って判定するにはmatchの引数をどうすればよいでしょうか
307デフォルトの名無しさん
2020/07/13(月) 00:49:50.36ID:lkNbIdQ1308デフォルトの名無しさん
2020/07/13(月) 19:20:45.29ID:YirsSrYP 教えてください。基本的な質問で恐縮です。
20200706T030000Z
SUMMARY:打合せ
LOCATION:中野
DTEND:20200706T043000Z
から、
$1 0300
$2 打合せ
$3 中野
$4 0430
を抜き出すにはどのようにすればよいでしょうか。
20200706T030000Z
SUMMARY:打合せ
LOCATION:中野
DTEND:20200706T043000Z
から、
$1 0300
$2 打合せ
$3 中野
$4 0430
を抜き出すにはどのようにすればよいでしょうか。
309デフォルトの名無しさん
2020/07/13(月) 19:49:46.79ID:GfOrWnDk ^\d{8}T(\d{4}).*+\nSUMMARY:(.*+)\nLOCATION:(.*+)\nDTEND:\d{8}T(\d{4})
310デフォルトの名無しさん
2020/07/14(火) 13:34:31.12ID:h5j+nt7i 今まで何となくで使ってきたけどキャプチャの変数って式に対し1つしか用意されず
部分式呼び出しや量指定子の繰り返しで増やされずに上書きするみたいですね
^(?<y>2020[01]\d[0-3]\dT([0-2]\d[0-5]\d)00Z)(?:\n[^:\n]++:(.*+)){2}\n[^:]++:\g<y>
\1 \2 \3 \4 \5 \6
20200706T043000Z 0430 中野___
どの環境でもこういう仕様なの?
部分式呼び出しや量指定子の繰り返しで増やされずに上書きするみたいですね
^(?<y>2020[01]\d[0-3]\dT([0-2]\d[0-5]\d)00Z)(?:\n[^:\n]++:(.*+)){2}\n[^:]++:\g<y>
\1 \2 \3 \4 \5 \6
20200706T043000Z 0430 中野___
どの環境でもこういう仕様なの?
311デフォルトの名無しさん
2020/07/14(火) 13:41:52.76ID:tlUY963U312デフォルトの名無しさん
2020/07/14(火) 13:50:15.90ID:tlUY963U もしキャプチャグループが増えるとして
与えられた文字列によって増える順番が異なってくることが考えられるしね
与えられた文字列によって増える順番が異なってくることが考えられるしね
313デフォルトの名無しさん
2020/07/14(火) 21:21:06.51ID:h5j+nt7i キャプチャしたけりゃ繰り返しや\gで省略するなってことなんだろうけど
気になって出来る方法無いか調べてたら鬼雲で捕獲履歴参照なるものがあった
デフォでは無効になってるみたいだけど
ttps://github.com/k-takata/Onigmo/blob/master/doc/RE.ja
補記 5. 実装されているが、既定値では有効にしていない機能
+ 捕獲履歴参照
(?@...) と (?@<name>...)
例. /(?@a)*/.match("aaa") ==> [<0-1>, <1-2>, <2-3>]
使用方法は、sample/listcap.cを参照
有効にしていない理由は、どの程度役に立つかはっきりしないため
気になって出来る方法無いか調べてたら鬼雲で捕獲履歴参照なるものがあった
デフォでは無効になってるみたいだけど
ttps://github.com/k-takata/Onigmo/blob/master/doc/RE.ja
補記 5. 実装されているが、既定値では有効にしていない機能
+ 捕獲履歴参照
(?@...) と (?@<name>...)
例. /(?@a)*/.match("aaa") ==> [<0-1>, <1-2>, <2-3>]
使用方法は、sample/listcap.cを参照
有効にしていない理由は、どの程度役に立つかはっきりしないため
314デフォルトの名無しさん
2020/07/20(月) 23:26:29.84ID:jWd+3fJB ●Regular Expressionの使用環境
サクラエディタ
●検索か置換か?
置き換え
●説明
3の倍数行あるテキストを、3行ごとに1行にまとめたい
●対象データ ※対象データは、必ず半角英数字です。
e
A8
11A9
c
2
LB5
3
d
8X5
●希望する結果
e A8 11A9
c 2 LB5
3 d 8X5
よろしくお願いいたします。
サクラエディタ
●検索か置換か?
置き換え
●説明
3の倍数行あるテキストを、3行ごとに1行にまとめたい
●対象データ ※対象データは、必ず半角英数字です。
e
A8
11A9
c
2
LB5
3
d
8X5
●希望する結果
e A8 11A9
c 2 LB5
3 d 8X5
よろしくお願いいたします。
315デフォルトの名無しさん
2020/07/21(火) 00:07:21.07ID:HQA5x8Lv316デフォルトの名無しさん
2020/07/21(火) 10:14:18.12ID:7bBDhy0Z (?:^.*+|\G.*+[\r\n]+.*+)\K[\r\n]+(.*+)[\r\n]+
_\1_
"_" は半角sp
最終行末尾に改行が無くても可
_\1_
"_" は半角sp
最終行末尾に改行が無くても可
317デフォルトの名無しさん
2020/07/21(火) 10:18:39.84ID:7bBDhy0Z [\r\n]+
は空行がある場合にズレるから使ってる改行文字に直して
CRLFなら\r\n
は空行がある場合にズレるから使ってる改行文字に直して
CRLFなら\r\n
318デフォルトの名無しさん
2020/07/25(土) 05:22:11.92ID:ygqLeqBq 質問です。デリミタが基本的に「/」が選ばれるのなぜですか?慣例だから?
319デフォルトの名無しさん
2020/07/25(土) 08:47:52.57ID:1TMz0fAY 人間というのは楽をしようとする生き物なんだ
320デフォルトの名無しさん
2020/07/25(土) 17:47:34.31ID:bnVhPJSY321デフォルトの名無しさん
2020/07/27(月) 13:00:24.19ID:NlQGNze0 ●Regular Expressionの使用環境
Ruby2.5
●検索か置換か?
置換
●説明
スペースを削除したい。ただしダブルクオーテーション内は処理対象から除外
●対象データ
ABC, DE F,"G HI"
●希望する結果
ABC,DEF,"G HI"
ダブルクオーテーション内以外に対して処理するって結構ありそうだけど見つからないような・・
Ruby2.5
●検索か置換か?
置換
●説明
スペースを削除したい。ただしダブルクオーテーション内は処理対象から除外
●対象データ
ABC, DE F,"G HI"
●希望する結果
ABC,DEF,"G HI"
ダブルクオーテーション内以外に対して処理するって結構ありそうだけど見つからないような・・
322デフォルトの名無しさん
2020/07/27(月) 13:15:08.91ID:GIKub5S5 そのフォーマット通りなのか
あるいは任意でダブルクォーテーションの処理をするのかで変わってくるな
あるいは任意でダブルクォーテーションの処理をするのかで変わってくるな
323デフォルトの名無しさん
2020/07/27(月) 14:36:52.94ID:Dng4VfHm [ ](?![^",\n]*+"(?:,|$))
324デフォルトの名無しさん
2020/07/27(月) 15:27:53.85ID:OciGuojB (?>".*?"|[^"スペース]++)*+\Kスペース
を削除
を削除
325デフォルトの名無しさん
2020/07/28(火) 23:58:50.39ID:dH+Aps1K HTML中に
<a href="/a.html"><img src="test.jpg"></a>
と
<img src="test.jpg">
リンクに囲まれた test.jpg または、画像だけののどちらかがあって。
どちらにも引っかかる正規表現が書けません。
PHPの正規表現キボンヌ
自力では2つの正規表現を書いてしのいでいるので、一つで対応できますか?
現状は
リンクに囲まれた画像
/(^.*)(<a href=".*?>\n*<img .*?test.jpg.*?>\n*<\/a>)(.*$)/s
画像のみ
/(^.*)(<img .*?test.jpg.*?>)(.*$)/s
で対応しています。
<a href="/a.html"><img src="test.jpg"></a>
と
<img src="test.jpg">
リンクに囲まれた test.jpg または、画像だけののどちらかがあって。
どちらにも引っかかる正規表現が書けません。
PHPの正規表現キボンヌ
自力では2つの正規表現を書いてしのいでいるので、一つで対応できますか?
現状は
リンクに囲まれた画像
/(^.*)(<a href=".*?>\n*<img .*?test.jpg.*?>\n*<\/a>)(.*$)/s
画像のみ
/(^.*)(<img .*?test.jpg.*?>)(.*$)/s
で対応しています。
326デフォルトの名無しさん
2020/07/29(水) 01:26:58.01ID:W2ZwK0DF /<img[^>]+test\.jpg[^>]+>/g
JavaScript では、これで両方に一致する。
[^>]+ で、> 以外の文字を、1文字以上。
g で、すべての箇所に一致する
test.jpg だと、. は任意の1文字を表すから、意味が異なる。
ドットという文字に一致させるには、\. とエスケープが必要
JavaScript では、これで両方に一致する。
[^>]+ で、> 以外の文字を、1文字以上。
g で、すべての箇所に一致する
test.jpg だと、. は任意の1文字を表すから、意味が異なる。
ドットという文字に一致させるには、\. とエスケープが必要
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【サッカー】U-17日本代表、激闘PK戦制す 北朝鮮撃破で6大会ぶり8強入り U17W杯 [久太郎★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★3 [ぐれ★]
- XやChatGPTで広範囲の通信障害 投稿や閲覧できず [蚤の市★]
- 【芸能】日中関係悪化でエンタメ業界に大ダメージ… JO1の中国でのイベント中止、邦画は公開延期、STARTOアイドルへの影響も [冬月記者★]
- 現役猟師・東出昌大、クマ被害続出も過熱する報道に「クマはそんな危ないもんじゃない」理由語る [muffin★]
- 【インバウンド】中国人観光客の日本での消費額は年間約2兆円超…中国政府は公務員の出張取り消し [1ゲットロボ★]
- ハゲがレジやってるコンビニって
- 4時だから窓から4回ちんこ出した
- クマどもが冬眠拒否
- Perfume・あ~ちゃんの結婚相手の一般男性、吉田カバンの社長と判明 [977261419]
- 自民党議員「高市は先人が築き上げた日中関係を壊した。外務省が謝罪に言ってるが自分で責任を取れ」 [834922174]
- 宇宙飛行士 vs 超天才数学者
