Regular Expression(正規表現) Part14 [無断転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
2017/03/15(水) 02:04:35.47ID:e01p03UP
Regular Expressionスレです。

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

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


次スレは>>980宜しく
天ぷら等2以降
2018/11/02(金) 01:26:49.16ID:XP4jtOby
>>702
解説ありがとうございます
ということは今まで自分はperl内部の独自の文字コードにエンコードされた文字列に
対して正規表現を使っていたわけですね、恥ずかしながら初めて知りました
704デフォルトの名無しさん
垢版 |
2018/11/05(月) 20:41:07.84ID:SJelCvn/
>>683
畳み込み文字ってなんですか?
2018/11/05(月) 23:47:01.14ID:xCFT0arz
(?:
  ( V ) > (0 -1)
 |
  ( . ) >  (1  0)
)
  俺も分からん
2018/11/06(火) 18:39:37.29ID:4TN3vyid
<正常>

(1)?
(?(1)(?:2|3)|4)

(1)?
(?(1)(?:2|3)|(?:4|5))

(1)?
(?(1)2|(?:3|4))

(1)?
(?(1)(2|3))

(1)?
(?(1)(?>2|3))

----------------------------
<異常>

(1)?
(?(1)(?:2|3))
2018/11/06(火) 19:30:27.97ID:4TN3vyid
<異常>

(1)?
(?(1)(?:2|(3)))

置換: [$2]
対象テキスト: 3
結果: [3]

-----------
<正常>

(1)?
(?(1)(?>2|3)|4)

(1)?
(?(1)(?>2|3)|(?>4|5))
2018/11/06(火) 19:36:59.61ID:4TN3vyid
>>707 の実験でバグの原因が分かった

1、不要なカッコを取り除く処理が (?: ) を取り去った
2、分岐の "|" の意味合いが変わってしまった

ということだね、原因が分かれば回避が簡単なのでこのまま放置でも良さそう
2018/11/09(金) 18:21:43.84ID:BZlL2mTg
perl5.14

# 1文字が2文字にマッチ
if ( "fi" =~ /\A\x{fb01}\z/i ){ print "true\n"; } else { print "false\n"; }
2018/11/09(金) 18:52:26.91ID:BZlL2mTg
if ( "K" =~ /\A\x{212A}\z/i ) true
if ( "K" =~ /\A\x{212A}\z/il ) false
2018/11/09(金) 21:22:21.15ID:BZlL2mTg
if ( "\x{212A}" =~ /[[:print:]]/ )  true
if ( "\x{212A}" =~ /[[:print:]]/a ) false
2018/11/10(土) 00:04:00.21ID:EY2CMtcP
\d{0,32766}
# ok

\d{0,32767}
# error "Quantifier in {,} bigger than 32766 in regex;"
2018/11/10(土) 00:21:29.46ID:EY2CMtcP
# \d{0,} は 32766回 を超えてマッチ可能
my $str = "";
for ( $count = 0; $count < 33000; $count++)
{ $str = $str."0"; }
print "\$str\.length = " , length($str) , "\n";

if ( $str =~ /\A\d{0,}\z/ )
{ print "true\n"; } else { print "false\n"; }

# 結果
# $str.length = 33000
# true
2018/11/10(土) 18:21:06.77ID:EY2CMtcP
# 検索表現の途中にある \G をマッチさせる
my $str = 'abcde';
$str =~ /abc/g;
if ($str =~ /abc\Gd/){ print "true\n"; } else { print "false\n"; }
2018/11/13(火) 00:16:05.06ID:QabZTjVa
# (?1) の直前に (?i) を置いても効かない

if ( "Aa" =~ m/(?i)(A)(?1)/ )
{ print "true <$1>\n"; } else { print "false\n"; }
# 結果:true <A>

if ( "Aa" =~ m/(A)(?i)(?1)/ )
{ print "true <$1>\n"; } else { print "false\n"; }
# 結果:false
2018/11/13(火) 05:19:20.83ID:QabZTjVa
## (?{code}) を使って >>695 の置換
if ( "ybrybrb" =~ /
\A
(?|
(?<赤>r)(?{ "aka"; })
| (?<青>b)(?{ "ao"; })
| (?<黄>y)(?{ "ki"; })
)*
brybrb ## バックトラックに対応出来るか試す
\z
/x )
{ print "true. Color <${1}> is <${^R}> .\n"; } else { print "false.\n"; }
## 結果: true. Color <r> is <aka> .
## バックトラックの対応、成功
2018/11/13(火) 21:32:36.34ID:QabZTjVa
# 仲間外れを探せ
if ("\x{1990}" =~ /
\N{U+1990}
#\N{1990}
#\N{NEW TAI LUE LETTER HIGH NA}
/x){ print "match.\n"; } else { print "false.\n"; }
718デフォルトの名無しさん
垢版 |
2018/11/14(水) 10:41:07.07ID:Hh1ptiAj
717
2018/11/14(水) 14:37:49.07ID:duOGmOFb
ワロタw
2018/11/14(水) 18:45:40.17ID:I91AeKub
このクイズだか検証だかよくわからんの書き連ねてるのは何なの?
一人で無意味に書き連ねてるの?誰かとやりとりしてるの?
2018/11/14(水) 23:41:31.78ID:cpUdYoRF
正規表現の勉強をしながら気付いたことをメモってるだけです
基本的には一人でやってます

仲間が欲しい...
2018/11/14(水) 23:44:34.67ID:CNd6PM4x
ここはお前のチラシの裏なのか

ある程度まとまってんならともかくメモ書きなら他所でやれよ
2018/11/15(木) 00:11:59.19ID:Ow4iH1sO
需要ないかな?無いならやめます
2018/11/15(木) 22:32:34.48ID:IM0UsOCP
無いよ
2018/11/16(金) 17:20:00.59ID:eADG8kUk
bregonig.dll の (?a)\w の処理速度が遅い

(?u)\w と同じ速さ
\s や \d や [a-zA-Z_] より4倍の遅い

改善の余地ありそうだね
2018/11/17(土) 03:22:15.33ID:YADh6pBI
## (?(R1)yes|no) のサンプルコード
if ("abc23yz" =~ /

\A
( # $1
( # $2
a(?1)z
|
b(?2)y
|
c(?(R1)1|2)(?(R2)3|4)
) # $2
) # $1

/x){ print "match. <$&> \n"; } else { print "false.\n"; }
# 結果: match. <abc23yz>

# aとzの間にあるcは (?1) の中でマッチしているが
# bとyの間でもあるため (?2) の中でもある
# この場合はcを直接覆っている (R2) だけがyesになる
# 直接でない (R1) はnoになる
2018/11/17(土) 12:49:09.25ID:Oiq/x6oK
いつまで続くの?
2018/11/21(水) 19:34:31.80ID:CU3gUCH4
●Regular Expressionの使用環境
C#

●検索か置換か?
置換

●説明
先頭の全角スペースのみを置換したい
先頭の全角スペースは1文字の場合もある

●対象データ
   ああああ あ あ あ あ あ

●希望する結果
空空空ああああ あ あ あ あ あ
2018/11/21(水) 23:39:43.26ID:UsYfXb0d
>>728
Regex.Replace(str, @"(?<=^\s*)\s", "空");
2018/11/21(水) 23:41:52.91ID:UsYfXb0d
あ全角スペースか
\sを全角スペースに変えて
2018/11/22(木) 01:15:55.43ID:YNRtrxPu
可変長の戻り読みは便利だけどコールバックで処理するのが普通じゃないかな
https://ideone.com/4l8abQ
732729
垢版 |
2018/11/22(木) 03:09:11.69ID:YAZbwzDX
>>731
たしかにそっちの方が倍くらい速かった
ちなみに正規表現関係ないけど

var trimed = str.TrimStart(' ');
var replaced = new string('空', str.Length - trimed.Length) + trimed;

とか

var sb = new StringBuilder(str);
for(int i = 0; i < sb.Length; i++) if (sb[i] == ' ') sb[i] = '空'; else break;

とかにするとさらに10倍以上速かった
正規表現使わないでもいい時はなるべく使わないほうがええね
2018/11/22(木) 11:43:47.30ID:sD3Vu3lJ
>>729-732
どうもありがとうございました
2018/11/26(月) 03:08:54.11ID:bvNwlvbS
Regex.Replace(str, @"\G ", "空");

でもいけるよ
735デフォルトの名無しさん
垢版 |
2018/11/26(月) 06:49:56.12ID:OBhrl1nm
>>734
・・・っ、すごい。サクラエディタとかでも使える。
\Gのありがたみ知らなかった。私は、まだまだ精進が足りないようだ。
2018/11/27(火) 00:09:50.92ID:5gbDlA47
\Gを知らないのに正規表現を使いこなせるということはproxomitronのユーザーさんかな
2018/11/28(水) 15:10:22.46ID:N4CCGDXj
\Gの使い方を覚えたら>>714が面白く感じるかもね
知ってれば今更感しかないが
2018/11/29(木) 02:42:35.12ID:Fz25AUlj
>>505-506
すごい

こういう書き込みが初心者の質問とその回答で埋もれてしまうのはもったいない
質問スレとは別に正規表現の本スレらしいスレがあるといいな
2018/11/29(木) 02:52:05.30ID:rs9fzmaE
頑張ったなぁとは思うけど https://regex101.com/ じゃあかんかったか?とも思う
というかリンク貼れんの? https://goo.gl/M2Fn68.info
2018/11/29(木) 08:19:27.68ID:nDdllTwV
自分で立てればいいのになんで他人頼みなの?
2018/12/02(日) 03:28:37.05ID:s0yCsMa3
>>738
じゃあ俺が立てるわ、テンプレの準備にちょっとかかるが
2018/12/08(土) 16:06:50.58ID:7G2k61ed
twitter.com/munesuk
enya_go/status/1071188833515954176
先輩w
2018/12/08(土) 20:04:57.14ID:RNQqcEtu
アンド検索をしたいのですが、どう書けばいいでしょうか

^(?=.*あああ)(?=.*かかか).*$
このコードを見つけました

あああ と かかか の含まれる行がヒットします
ただ、ロジックがちょっとわかりません
先読みをつかっているのですが、先読み対象の語が指定されていません
これはどういうことでしょうか

分かりやすい解説サイトでもあれば教えてください
2018/12/08(土) 20:32:25.49ID:Dx33rAX6
このへんかな
>正規表現で論理積(AND)を実現する
>https://qiita.com/n4o847/items/dbcd0b8af3781d221424

自分流のちょっと乱暴な理解解釈だと
1. (?=検索対象) は、この条件が満たされないと後続のマッチを調べない
2. (?=検索対処) 自体は、この条件が満たされてた時点である意味消滅したかのようにふるまう
って動きを取るような感じ


ちなみにAND検索ができるgrepツール(TresGrep)がどんな正規表現を組み立てるか調べてみたら
「xxx&yyy&zzz」

「xxx.*?(yyy.*?zzz|zzz.*?yyy)|yyy.*?(xxx.*?zzz|zzz.*?xxx)|zzz.*?(xxx.*?yyy|yyy.*?xxx)」
なんてのを吐き出した
安直だけどまあこれも間違ってはいない
2018/12/08(土) 20:35:48.50ID:Dx33rAX6
あ、先読み対象の語は「^」だけで
「行頭から始まるという条件さえ満たせば何でもよい」と指定してる
2018/12/08(土) 22:19:09.33ID:7G2k61ed
環境が分からない
何を検索したいのか分からない

>先読みをつかっているのですが、先読み対象の語が指定されていません

??? 指定されてないって何のことだろう、意味不明
正規表現うんぬんの前にまともな質問の仕方を学ぶべき
2018/12/08(土) 22:26:59.96ID:RNQqcEtu
>>744
先読み対象は行頭ということですね
^(?=.*あああ)
これだと意味としては
「あああの前に行頭が存在すればヒット」
ということになると思います

これってもう少しかみ砕いた表現にできませんか?
まだ、理解が追い付いてないです

行頭が存在すればヒットということは、「行の中にあああがあればヒット」と同じことですか?
2018/12/08(土) 23:05:31.04ID:hZepSGXS
>>747
^は検索位置を示すもので、先頭を表す記号、
(?=)は先読みで検索開始位置を移動しないもの
つまり、
^(?=.*あああ)
は、先頭から(改行までの間に)文字列「あああ」がある場合
(先読みなのでマッチ後も次の検索開始位置はまだ先頭のまま)

よって
^(?=.*あああ)(?=.*かかか)
は、先頭から(改行までの間に)「あああ」があり、且つ先頭から「かかか」がある場合
.*$は不要だが、付けると、改行が存在すると絶対マッチしなくなる点が異なる
2018/12/09(日) 06:54:41.50ID:C3Qast1U
↑かっこを二つならべると、()と()という感じで、アンドになるんでしょうか?
あと
(?=)は先読みで検索開始位置を移動しないもの
の部分なんですが、検索開始位置を移動しないというのはどういうことでしょうか
?=キーワード
で設定した場合、キーワードの相対位置から前を検索する、という認識でした
2018/12/09(日) 08:43:46.17ID:UT294bNs
質問者は正規表現の基礎知識が足りてないと思われる
たとえるなら、(?=)の先読みは高校受験レベルで求められる英文法だとすると
質問者の場合は入門レベル(そもそもの基本ルールとか「.*」とか)の知識がごそっと抜けてる

なのでここまで出てきた説明を読んでもちんぷんかんぷんにしかならないのだろう
ちょっと遠回りになるけどちゃんと正規表現の基礎を理解したほうがいい
https://qiita.com/jnchito/items/893c887fbf19e17d3ff9
あたりを最終回(その4)まで読め
それでも理解できないなら、貴方には正規表現を扱うのは無理だからあきらめろ
2018/12/09(日) 09:50:40.98ID:vJutpfX/
>>749
()()でandになるわけではなく、()の次に()があるかどうかとなる(順序関係ができている)
^(a)(b)と書くと、abにはマッチするがaやbやbaにはマッチしない
これは、^(a)がマッチした時点で検索位置がaの次に移動しているためである
^(?=a)(b)と書くと、何もマッチしなくなる
これは先頭からaが見つかった場合、検索開始位置が移動しないため(?=a)を検索する前のまま(つまり先頭)になっている
次にbが先頭にあればいいわけだがそこにはaがあるからマッチしない
2018/12/09(日) 10:39:42.84ID:bsA2M6bZ
ID:vJutpfX/

頭が良すぎて教えるのが下手なパターン
バカ語で話さないと通じないよ
2018/12/09(日) 10:51:59.84ID:bsA2M6bZ
こんな最低限のこともググらず、自分で努力せずに人に聞くようなのに
教えてはいけないと思う、居ついてしまうからエサを与えないで欲しい
2018/12/09(日) 11:55:43.32ID:C3Qast1U
>>751
動かしながら覚えてみます
ありがとうございます
2018/12/09(日) 12:38:27.41ID:H3JhKeet
動かしながら覚えるんじゃなくて
>>750でも何でも良いけど、説明読んで覚えて欲しい
中途半端な事してるから、>>749みたいに間違った解釈になるんでしょ
756744
垢版 |
2018/12/09(日) 19:23:00.27ID:i2SuH64K
うーん、一応はレス内容から質問者がどの程度内容を理解したか/理解する気でいるか
透けて見えるんだけどね
>>744のURLの記事を読んだうえでこの程度のレスしか返ってこず、さらに
最終的には>>754のようなリアクションが返ってきたか

回答して残念な気持ちになったよ
2018/12/09(日) 19:57:20.13ID:sTKdTIE5
位置の理解は言うほど易しくはないとおもわれ
正規表現検索とはテキストエディタでカーソルを1つずつ進めながら
合致する文字を1文字ずつ探っていくようなものだというイメージが必要だけど
そこをちゃんと説明してるものはあまり見かけない
2018/12/09(日) 20:00:27.58ID:bzQOhihu
知恵遅れに場所を移動したらしい
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q10200210065
まずは自習しろよw
2018/12/09(日) 21:49:11.61ID:bsA2M6bZ
回答した人は親切丁寧に回答出来ていたよ、お疲れ様
上にも書いたように頭のいい人にしか理解出来ない回答になっていた
俗にいう分かってる人にしか分からない説明ってやつ

俺はこういうバカに教えるのは得意だから俺が回答を付ければ理解されたと
思うけど注意をスルーされたのでスルーした
2018/12/10(月) 14:42:13.07ID:RU/iAdEK
知恵袋で質問を4000件以上やりとりしてる人だったのか
それなのに質問の仕方がまったくダメって
2018/12/10(月) 17:07:38.24ID:RU/iAdEK
質問のペースがおかしい、1日に質問6つしてる
ググるより先に質問してんのか?
2018/12/10(月) 17:25:29.04ID:RU/iAdEK
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q10200202400

おまえらはこんなの相手に一生懸命教えてたのか
自分を安売りしすぎ、もってけ泥棒状態
2018/12/10(月) 17:25:37.52ID:RTUhzLAF
そして回答はアダルトカテゴリのみという…
2018/12/10(月) 17:29:58.71ID:RU/iAdEK
やっぱ質問スレと本スレは分けるべきだな
この流れになると賢い人が来なくなってしまう
765729
垢版 |
2018/12/10(月) 18:14:05.41ID:PtRqcV9k
なんで馬鹿が一匹きただけでそういう話になるんだよ
過剰対応の典型やろ
2018/12/10(月) 21:59:56.06ID:RU/iAdEK
入門サイトすら読んでないような人の質問とその回答にうんざりして
来なくなった人は大勢いると思うんだがそういう人達が集まれるスレが
あったらひょっとしたらすごいスレになるんじゃないかという期待がある
実際はただ過疎るだけなんだろうけどね
2018/12/11(火) 02:31:31.29ID:oKdEGQIj
隔離スレなんて作るだけ無駄だろ
機能してるところなんて見たこと無い
2018/12/11(火) 02:44:05.34ID:4gYtUlOJ
PCサロン板なら迷惑にならなそうなので立ててみた

【PCサロン】正則表現 part1
http://mao.5ch.net/test/read.cgi/pc2nanmin/1544462745/l50

基本過疎進行ですが正規表現を使いこなせる人同士で語りたい方はこちらで
2018/12/13(木) 17:01:35.11ID:IMhQiOyS
回答が付いた。でも微妙におかしい。つっこんであげるべきか?
2018/12/14(金) 20:59:53.53ID:DlmPms4F
^
(?:
(?!あああ|かかか).
)*+
(?>
(あああ)
|
かかか
)
(?:
(?!あああ|かかか).
)*+
(?(1)かかか|あああ)
.*+$
2018/12/14(金) 21:11:35.41ID:DlmPms4F
^
(?~あああ|かかか)
(?>
(あああ)
|
かかか
)
(?~あああ|かかか)
(?(1)かかか|あああ)
.*$
2019/01/10(木) 03:02:56.41ID:mY602DpM
FirefoxやChromeのブックマークにこれ登録して
https://i.imgur.com/68VCDRV.jpg

ブラウザのアドレスバーに
re foo|bar|baz
と入れると

https://regexper.com/#foo%7Cbar%7Cbaz
に飛べるようになる
簡易チェッカーとして便利
2019/01/10(木) 14:50:11.25ID:Q3mhk3sM
>>772
いいねw まったく思い付きもしなかったアイデアwww
2019/01/10(木) 15:21:01.00ID:Q3mhk3sM
>>772
chrome on mac だけどブックマークではダメで、設定→検索エンジン→検索エンジンの管理→追加 から登録しないといけなかったわ。
2019/01/13(日) 18:46:07.60ID:vFHHKg45
URL(http|https)の正規表現って難しいのかね
https://mathiasbynens.be/demo/url-regex
38charsのが好きだわ
776デフォルトの名無しさん
垢版 |
2019/01/26(土) 10:17:12.64ID:rNPVIr5d
否定先読み
と言うのがなかなか理解出来ないのですが、
サンプルを動かすと確かに動作するのですが、
今一つ仕組みが分かりません。
どんなふうに理解すれば良いのでしょうか?
777729
垢版 |
2019/01/26(土) 10:42:36.00ID:K4a4emwR
文字じゃなくて位置(文字と文字の間)に一致すると考えればいい
たとえば

abcdef

が対象の場合
肯定先読み(?=def)は直後にdefがある位置(cとdの間の位置)に一致する

abc[ここ]def

否定先読み(?!def)は直後にdefがない位置に一致する

[ここ]a[ここ]b[ここ]cd[ここ]e[ここ]f[ここ]

行頭の^や行末の$も文字じゃなくて位置に一致する
778デフォルトの名無しさん
垢版 |
2019/01/26(土) 11:13:09.45ID:yVAkGzul
なるほどthx
2019/01/26(土) 11:53:37.94ID:mL4if6wW
>>777
横からだけど、否定のほうはなるほどだわ
条件を絞るつもりが広げちゃってる場合があるんだな
2019/01/26(土) 15:19:07.07ID:exLOU4gz
先読みはマッチさせたら、マッチ開始位置に戻るから、
単なる位置指定で、幅を持たない。
単なる条件を追加した、フィルター

否定先読みはマッチしない場合に、マッチ開始位置に戻る

先読みは、マッチ位置の直後の条件を指定するが、
戻り読みは、マッチ位置の直前の条件を指定する
781デフォルトの名無しさん
垢版 |
2019/01/27(日) 10:46:10.47ID:Th+zYLMn
>>777
ありがとうございました。
良く分かりました。
2019/01/28(月) 10:47:47.80ID:wg8XKdax
.netでの正規表現に迷ってます。
次の文字列のとき、"efgh/1"以降に"/"が含まれないときマッチするような正規表現を書きたいのです。
http://192.168.1.100/abcd/efgh/1  →True
http://192.168.1.100/abcd/efgh/1/ →False
http://192.168.1.100/abcd/efgh/12  →True
http://192.168.1.100/abcd/efgh/123/  →False
http://192.168.1.100/abcd/efgh/1?p=1  →True

次のような正規表現を試してみましたが、数値1文字しか対応できませんでした。
\/efgh\/[0-9]+(?!\/)
2019/01/28(月) 10:57:25.94ID:DdBbxYrt
\/efgh\/1[^/]*$
ではダメかな
2019/01/28(月) 12:18:39.25ID:c4Y7c3OH
>>783でいいと思う
あとスラッシュにエスケープは不要だから/efgh/1[^/]*$
否定先読みが使いたいなら /efgh/[0-9]+(?!.*/)
(?!.*/)はそれ以降/が含まれない位置という意味
(?!/)だと直後に/がない位置という意味だから数字が2文字以上続いたらマッチしてしまう
2019/01/28(月) 12:21:15.63ID:c4Y7c3OH
ごめん1って決まってるならこれでいいな
/efgh/1(?!.*/)
786782
垢版 |
2019/01/28(月) 15:51:48.42ID:wg8XKdax
>>783-785
ありがとうございます!
正しい判断をすることが出来ました。
数値は1以外もありえるため、次の正規表現を使います。
/efgh/[0-9][^/]*$
/efgh/[0-9](?!.*/)

>>784
正規表現の意味まで教えてもらい、本当に助かります。
今後の役に立てていきます。
2019/01/29(火) 06:11:22.47ID:mzqJgDrY
$1
Windows PowerShell Cookbook
Regular Expressions Cookbook
Perl Cookbook
PHP Cookbook
Android Cookbook

Humble Book Bundle: Programming Cookbooks by O'Reilly (pay what you want and help charity)
https://www.humblebundle.com/books/programming-cookbooks
2019/01/29(火) 06:32:49.85ID:mzqJgDrY
Tools for Working with Regular Expressions
RegexBuddy
RegexPal
RegexMagic

More Online Regex Testers
RegexPlanet
regex.larsolavtorvik.com
Nregex
Rubular
myregexp.com

More Desktop Regular Expression Testers
Expresso
The Regulator
SDL Regex Fuzzer
PowerGREP
Windows Grep
RegexRenamer
789デフォルトの名無しさん
垢版 |
2019/01/31(木) 16:07:48.62ID:Sc+6fvIO
誰かこの鬼雲のバグ修正PR投げてあげて

https://github.com/k-takata/Onigmo/issues/106
2019/01/31(木) 16:08:40.61ID:Sc+6fvIO
https://github.com/k-takata/Onigmo/issues/106
(?(n) (?: X | Y ) ) and (?(n) X | Y ) behavior is same.
(?: ) is left out.

(?(n) (?: X | Y ) | ) is nomal behavior.
This is a solution to a this bug problem.

ruby 2.5.3p105 (2018-10-18 revision 65156) [x64-mingw32]
bregonig.dll Ver.4.12 with Onigmo 6.1.2
2019/02/13(水) 00:35:05.11ID:HRhgNpoV
鬼雲には鬼雲を知ろうとすればするほど謎のテキストエディタの
情報が集まってくるという不思議な不具合があるがこのフィックスは不可能 :-)
2019/03/07(木) 20:57:23.09ID:sEA+6w2y
今日元号の改正の準備で日付関連のコード書いてきたんだけど
>>695の置換が出来ると便利だったなという所があった
再帰が使えるのにこれが使えないのはバランス感覚に欠ける気がします
どうしてこうなった?
2019/03/12(火) 13:14:07.01ID:vSZ9R6NM
先読みの(?=huge)をつけると、後方がキャプチャーされません

そもそも前方に文字のない?=って使い方あってるでしょうか?
ちなみに言語はVB6です
2019/03/13(水) 00:19:48.81ID:heD+eXgL
Are you japanese?
Your japan language is strange.

Please show me sample codes.
2019/03/13(水) 01:39:37.63ID:bUFEpZHr
あなたの英語も変ですよ。
日本人はJapaneseとキャピタライズしてください。
日本語もjapan languageではなくJapanese languageです。
Japaneseだけで日本語という意味になりますが、前の文で日本人という意味で使っているのでlanguageを付けるのはいい判断でした。
また最後の文は、どうしても複数の例を見たいことを強調するのでない限りcodesではなくのcodeがふつうです。
不定冠詞のaも付けません。(絶対にただひとつの例だけ欲しいのでない限り)
2019/03/13(水) 02:16:45.79ID:heD+eXgL
自分の英語力は小学生相当なのでこんなもんです
教えてくれてありがとね
797デフォルトの名無しさん
垢版 |
2019/03/13(水) 02:29:04.73ID:Z/ka/TFK
irregular expression, exactly.
2019/03/13(水) 08:53:04.20ID:heD+eXgL
I am good at irregular expression.
799デフォルトの名無しさん
垢版 |
2019/03/13(水) 14:12:32.68ID:ZUOT1OTB
nativeのひとに「あなた英語上手ですね」って言われても誉め言葉じゃないからな
その時点で下に観られてる
2019/03/14(木) 17:54:44.14ID:k53fNhgw
上手ですねと言われる可能性が0なので大丈夫です
801デフォルトの名無しさん
垢版 |
2019/04/22(月) 20:21:53.32ID:GQt1LKrG
sed
置換
1に挟まれたN個以下の0または-で構成された文字列を、同数の1で置き換える

10001→11111
100-1→11111
1---1→11111
10-0-0001→111111111

置換対象と同数の文字列で置換するというところをどう正規表現で表すかわからず、、、
よろしくお願いします
2019/04/23(火) 05:37:05.12ID:TbAsj7lM
正規表現で数を数えるのは無理
マッチさせて自力で文字を数えるコード書いて入れ替えて

ちなみに\Gが使える正規表現環境なら正規表現単独で可能
803デフォルトの名無しさん
垢版 |
2019/04/23(火) 07:05:11.04ID:k/th3sVe
>>801
sed ':r; s/1[0-]\([0-]*1\)/11\1/; tr'

前方に 1 のある 10 を 11 に置換する
置換に成功したら tラベル で :ラベル の位置に戻って繰り返す
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況