正規表現

■ このスレッドは過去ログ倉庫に格納されています
NGNG
正規表現
2009/06/05(金) 02:21:52
POSIX 文字クラスって [[:isalpha:]] みたいのを言うんじゃなかったっけ?

2009/06/05(金) 02:23:34
おっとなんか馬鹿なこと書いてしまった。

[a-z] も locale でどうマッチするかかわったりするよ?
2009/06/13(土) 13:28:45
ホント? \w とかなら変わると思うけど、
[a-z] は locale に依らず ASCII コードの範囲になるのでは?
2009/06/17(水) 02:14:08
書き込み禁止されてた。

>>753
どのUNIXでもそうなるとは断言できないけど、locale が en_us.UTF-8 とかのときに
a-z が aAbB….yYz な集合になるものもあるよ。

POSIX的には コード順だと定義はしてはいなかったはず。

2009/06/17(水) 08:44:18
文字列の範囲はロケールに依存する。例えば、エストニア語のアルファベット
では、s の後に z があり、その後は t、u、v、w、x、y と続くので、[a-z] で
はすべての小文字のアルファベットにマッチしない
2009/06/22(月) 05:54:23
うふふ
2009/06/25(木) 21:28:07
>>754
それはlocaleの問題でもOSの問題でもないだろ
例えばlgrepはデフォルトがcase insensitiveだし
2009/06/26(金) 17:56:44
>>757
問題が理解できてないようだな。君は話に加わらなくて良いよ。
2009/06/26(金) 18:09:55
それだけだとかわいそうなので補足すると、
>>754 が言ってるのは case sensitivity の問題じゃないよ。

>>754 のレスの「aAbB….yYz」をよーく目をこらしてみてごらん。
ロケールによってはこういう不思議現象が起こるのよという話。
2009/07/13(月) 21:38:46
ジオ落ちててonigurumaのソースが落とせん。
だれかミラー的なもの知らない?
2009/07/13(月) 21:50:51
いや、あったは、ミラー。<mirrorservice.orgとか
2009/09/19(土) 19:50:17
()内の、で区切られたものを
1(あああ、1) → 1(1、あああ)
2(ううう、3) → 2(3、ううう)
3(えええ、1) → 3(1、えええ)
のように入れ替えたいです。
条件は
・括弧は半角全角どちらでも対応。出力はどちらかに統一する。
・(あああ、いいい、ううう)のように3つ以上あるのは無視する

それと、こうやってもうまくいかないのは何故でしょうか?
sed -e 's/(/\(/g' -e 's/)/\)/g' -e 's/、/,/g' test.txt |
sed 's/\(([^,)]*),([^,)]*)\)/(\\2、\\1)/g'
2009/09/19(土) 19:51:30
こうやれば望みどおりの結果は出たのですが、
汎用性が低いのでもっとちゃんとしたのを作るにはどうしたらいいですか?

#!/bin/awk -f
BEGIN { FS="((|)|\\(|\\)|、| | +)" }
{
{print $1"("$3"、"$2$4")";}
}
2009/12/05(土) 13:45:25
765名無しさん@お腹いっぱい。
垢版 |
2010/06/02(水) 05:32:30
766名無しさん@お腹いっぱい。
垢版 |
2010/06/02(水) 17:20:06
http://arrow3.way-nifty.com/shige/images_pc/RegExp.png
http://www.codezine.jp/static/images/article/1655/config.jpg
http://mckyblog.img.jugem.jp/20090724_436625.png
http://www19.atpages.jp/imagelinkget/get.php?t=v&u=makotowatana.ld.infoseek.co.jp/VBScriptRegularExpressions.png
http://makotowatana.ld.infoseek.co.jp/text.gif
767名無しさん@お腹いっぱい。
垢版 |
2010/09/23(木) 21:58:59
行頭にある>以外の>を置換したいのですが、どのように記述できるでしょうか?
2010/09/24(金) 11:09:22
>>767
ヘタレな処理ですみません。動けば正義。
echo '>1>2>3>4>5>' | perl -ne '/^(.)(.*)/; ($a,$b)=($1,$2); $b=~s/>/*/g; print "$a$b\n";'
2010/10/03(日) 22:07:49
>>767
行頭にもし「>」が複数有れば二ツ目以降を削除する処理と
「>」以外が一文字以上続いてから「>」が一文字以上出現する文字列を
「>」以外が一文字以上続いている部分に置換する。
以上。
2010/10/10(日) 09:52:22
>>769
性器表現で書けよニダ
2010/10/11(月) 21:58:34
>>770

^>>+とか[^>]+とか
あえて書くことに意味は無いし、
削除や置換は正規表現では書けない。

文章の表面ではなく、コンテキストを嫁。
2010/12/12(日) 10:48:21
/RegEx/ - 便利な正規表現、みんなで共有
http://regex.gkbr.me/
773名無しさん@お腹いっぱい。
垢版 |
2011/01/11(火) 08:29:20

EmacsとpTeXを使っています。
pTeXでは日本語の括弧はいわゆる全角で書かないときれいに出ないみたいなので、
「(日本語)」のような表現を一発で「(日本語)」のように変換したいたと思うのですが、
これはどう書けばいいのでしょうか。

(日本語abc)や(Abc日本語)や(Abc日[改行コード]本語)のようなものにも
対応しなければならないような気がします。(abc)のようなのはそのままにしておきたいです。
てことは、 「両端が()で、()のなかにmultibyte文字が1文字でも入っているもの、複数行にも
マッチする」という条件でよさそうなのですが、どうでしょうか。

"([[:multibyte:]]+)"で(日本語)の形のやつまではわかったのですが、
その先に進めません。PerlのスクリプトでもOKですので教えてもらえないでしょうか。

2011/01/11(火) 15:02:53
>>773
入れ子になった括弧には未対応。
(replace-regexp "(\\([^\\(]*[[:multibyte:]][^\\)]*\\))" "(\\1)")

# pLaTex で otf 使えば大丈夫だったような?
2011/01/11(火) 17:55:06
ありがとうございます。うまく動くようです。

OTFパッケージの方は実験してみましたがやっぱり()と()は区別しているような・・・
776名無しさん@お腹いっぱい。
垢版 |
2011/03/12(土) 12:19:28.18
apacheのmod_rewriteでURLを書き換えたいと思っています。
以下が.htaccessのコードになります。
-------------------------------------------------------------------------
RewriteEngine On
RewriteRule ^([a-z0-9_-]+).htm$ execute.php?id=$1
-------------------------------------------------------------------------

例えば、”http://moge/test.htm”にアクセスすると”http://moge/execute.php?id=test”と同じようになるというものです。
ディレクトリにはexecute.phpの他にindex.htmを置きたいと思っているのですが、上のhtaccessを設置すると、”http://moge/execute.php?id=index”に飛ばされてしまいます。そこで、正規表現で特定の単語(index)を除外するにはどうすればいいのでしょうか?
ご回答お願いします。
2011/03/12(土) 14:53:45.34
Rewriteが htmなら

index.html ファイルにする
778776
垢版 |
2011/03/12(土) 15:37:35.48
>>777
あ、なるほど
確かにそれでもいけますね
さんくすです

ちなみに正規表現で特定の単語だけ除外っていうのはできないのでしょうか??
2011/03/16(水) 20:14:08.75
否定先読みでおk
あとマルチ乙
2011/03/29(火) 11:43:28.27
すっごく基本的なことで申し訳ないんだけど
aaaを含んでいてbbbを含まない行
ってのはどう書くんですか。
2011/03/29(火) 12:00:15.87
それは正規表現だけでやらなきゃだめなのかい?
2011/03/29(火) 12:06:43.95
grepでログの特定行を抽出したくて
2011/03/29(火) 12:20:13.45
grep -v
2011/03/29(火) 12:29:14.56
>>782
GNU grep で grep aaa logfile | grep -v bbb ってのじゃだめ?
785784
垢版 |
2011/03/29(火) 12:30:38.86
かぶったか
2011/03/29(火) 12:47:45.98
ああ、そっか。-v
ありがと
787名無しさん@お腹いっぱい。
垢版 |
2011/04/08(金) 01:34:57.59
vimの置換で以下のようなデータを置換したいです
hoge(半角空白*****)\tsage\t

hoge\tsage\t

:%s/ //g だとhogeが ho ge だったりもするので
半角空白が続く\tを\tにしたいです。
どなたかご教示お願いします
2011/04/08(金) 02:09:54.62
>>787
:%s/ \+\t/\t/g
とか?

本当にやりたいのは gg=G とか Align じゃないの
789 忍法帖【Lv=11,xxxPT】
垢版 |
2011/06/22(水) 16:55:34.67
aからz、かつAからZ、かつ0から9、かつその他記号(!"#$...)を含ませたいです。
[a-z&&A-Z&&0-9&&[^a-z^A-Z^0-9]]
とやってみたのですがうまく行きません。(´;ω;`)
どう表現すればいいでしょう。
2011/06/22(水) 17:10:25.90
.
2011/06/22(水) 17:38:34.78
>>789
むしろ含みたくない文字を列挙したほうが早いんじゃね?
2011/06/23(木) 00:03:09.64
>>789
それは印字可能な文字から空白を除いたものなんじゃあないのかい
2011/07/08(金) 22:03:29.79
肯定条件と否定条件、常にペアで考えたいところです
2011/08/03(水) 03:28:35.00
>>787

:%s/\(半角空白\**\)//g

・・・ではなくて、Excelでいう所のtrim関数みたいな動作か?
2012/03/07(水) 21:00:09.49
gsedをターミナルで実行したとき、
丸数字の1〜20が[\x{2460}-\x{2473}]でマッチせず
「無効な範囲の終端」というエラーメッセージが出ます。
何を間違えているのでしょうか。
2012/03/07(水) 22:36:48.15
>>794
> :%s/ //g
当人がチャレンジした結果がこれだから、タブ区切りの各値をtrimしたいんだろうと思うよ。

> 半角空白が続く\tを\tにしたい
ってことだから>>788でいいと思う。でも>>788の後半は違うと思う。
2012/03/07(水) 22:41:28.98
このスレ最近見てたと思ってたのに、8月だと…
2012/03/08(木) 05:24:46.29
>>795の自己レス
よく解らないのだけど、コードでなくそのまんま@からS(文字化けしていたらごめんなさい)
まで、1行ずつの置換行を書き並べたらうまくいきました。
コードだと1行ずつ書いてもダメでした。エラーは出なかったからコード間違えたかな。
799名無しさん@お腹いっぱい。
垢版 |
2012/05/27(日) 23:08:25.45
linuxのgrepでgreenとつく単語を検索したいのですが、どういう正規表現を使えばよいのでしょうか
2012/05/28(月) 08:03:03.12
>>799
くだらねえ質問はここに書き込め! Part 200
http://engawa.2ch.net/test/read.cgi/linux/1335349596/
2012/11/13(火) 18:47:33.56
リンゴ 1個
ミカン 2個
イチゴ 1個
スイカ 1個
スイカ 3個
ナシ
トマト
トマト
トマト
パイナップル
2012/11/13(火) 18:51:10.04
リンゴ 1個
ミカン 2個
スイカ 1個
スイカ 3個
イチゴ 2個
トマト 1個
トマト 3個
トマト 5個

リンゴ 1個
ミカン 2個
スイカ 1個 3個
イチゴ 2個
トマト 1個 3個 5個
のように整理したいとき、正規表現で実現可能ですか?
2012/11/13(火) 21:24:23.96
何言ってんだ。
2012/11/14(水) 02:50:13.58
>>802
例えば
sed
http://toro.2ch.net/test/read.cgi/unix/1085730992/l50
2012/11/16(金) 20:13:34.67
リンゴ 1個
スイカ 1個
ミカン 2個
スイカ 3個
イチゴ 2個

元データがこうなってない前提ならできるかもしれない
2012/11/16(金) 21:56:43.28
なってても出来ないことはないと思える
2012/11/17(土) 00:18:53.21
いや、正規表現どうこうって話じゃないだろ
2012/11/17(土) 03:31:10.85
まあ、そうだね
2012/11/17(土) 15:01:28.93
出発点になるテキストが規則的であればあるほど作業が楽になる。
2012/11/17(土) 16:45:39.64
sedスレで聞いてないね。perlやawkなど、どこか他で見た? ってか、本人どうしたの?
2012/11/18(日) 02:35:29.83
釣りだったようだな。
812802
垢版 |
2012/11/20(火) 15:26:50.28
いろいろ研究中ですが、釣りじゃありませんw
他のスレにまで投稿すると、マルチで蹴られてしまうからです。
2012/11/20(火) 16:03:55.39
マルチは同じ話題が並行して進行するのが問題。
ちゃんと移動すればマルチじゃないよ。
814名無しさん@お腹いっぱい。
垢版 |
2012/11/20(火) 18:49:22.20
以下のような文章があったとします。
〜aaa〜bbbaaa〜bbbaaa〜bbb〜
(〜は文字数の定まっていない文字列を表しています。)
ここから、それぞれ最初のaaa〜bbbだけを抽出、真ん中のaaa〜bbbだけを抽出、最後のaaa〜bbbだけをで抽出したい時、どう正規表現で表せばよいのでしょうか?
2012/11/20(火) 20:13:44.36
sedじゃだめなのかよ
2012/11/21(水) 02:55:30.50
「aaa」と「bbb」を例えば「【」「】」に置き換えてみると楽かも。
【があって、】以外のものがあるかないかして、】があったとき
が検索パターンってことになるよね。ここまでが正規表現。
その後は、1回目にマッチしたときだけ吐き出す、最後にマッチしたものだけ……
は、何を使うかで変わってくる。
2012/11/21(水) 07:09:17.34
>>816
「【」「】」に置き換えるんじゃなく、「aaa」と「bbb」の例でお願いします。
「【」「】」みたいな1文字じゃなく、「aaa」「bbb」みたいな複数文字なので。
しかも、「aaa」と「bbb」の間に普通の文字としてa bもあります。
2012/11/21(水) 08:20:17.05
こいつ、何もわかってない
2012/11/21(水) 10:34:37.69
perlの正規表現使わないと無理だと思うよ。
2012/11/21(水) 11:10:04.60
こんな感じかな?
aaa[^b]*\(b\{0,2\}[^b]\+\)*b\{0,2\}bbb
2012/11/21(水) 11:16:22.41
>>813の直後なのにマルチ
2012/11/21(水) 11:18:53.62
移動してるからマルチじゃないだろ
2012/11/21(水) 11:27:34.16
もっとタイムリーに本人出てこないとダレるわ
2012/11/21(水) 11:41:33.62
>>822
http://toro.2ch.net/test/read.cgi/tech/1340383120/421
2012/11/21(水) 11:43:27.15
>>824
おお、なるほど。
そんなところにも正規表現スレあったのか。
2012/11/21(水) 11:48:07.59
マルチか。もう知らん。
2012/11/21(水) 19:22:47.43
別人だと言ってるけど、それにしては似すぎ
2012/11/21(水) 19:39:46.55
こっちの見て書いたんだろ。
別人だとしてもマルチと変わらんな。
2012/11/21(水) 19:53:25.11
ここにもある。なんか、もうやだw

シェルスクリプト総合 その21
http://toro.2ch.net/test/read.cgi/unix/1352973453/l50
2012/11/21(水) 19:55:53.48
というよりシェルのが大元なのか。まあ、移動すると書いてあるからいいか。
2012/11/21(水) 23:32:17.64
こっちの奴は句読点付けてるのな
2012/11/22(木) 00:06:51.47
> シェルスクリプトスレより誘導されてきました
って書いてあんじゃん。ってかなんでこっちのスレで話を続けてるのかがわからん。
マルチうざい放置でスルーしよ
2012/11/22(木) 00:32:49.10
どっちが偽物とか関係なく、向こうの正規表現スレだけで進行させときゃ済む話だしな
2013/03/08(金) 21:56:18.88
すみません
(1)
(2)
(30)
(50)
(123)
(256)
こんな感じのデータを
(001)
(002)
(030)
(050)
(123)
(256)
こんな感じで変換するのはどうしたらいいんでしょうか?
2013/03/09(土) 00:11:09.75
sed -e 's/(\([0-9]\))/(00\1)/' -e 's/(\([0-9][0-9]\))/(0\1)/'
2013/03/09(土) 08:01:38.44
すみませんが詳しい方のみ回答をお願いします
837834
垢版 |
2013/03/09(土) 08:24:40.01
>>835
うまくいきましたありがとうございました。"-e"でスクリプトを2つ記述すればよかったんですね
なんか頭が固くて思いつきませんでした…。助かりました。
2013/03/09(土) 11:33:06.26
パイプもあるでよ
2013/03/10(日) 04:11:12.59
>>834, >>836-837
二度とこのスレに来るな。(俺が>>835でないのは命を懸けて誓う)
2013/03/10(日) 12:21:19.60
このスレに来るな。(キリッ
命を懸けて誓う(キリッ

2ちゃん初めてか? 肩の力抜けよ。
2013/03/10(日) 15:01:39.61
そりゃ>>835ではないだろ。
2013/03/10(日) 18:41:45.07
しかし>>836の悪態はへどがでる
2013/03/10(日) 19:19:40.33
836 はウニ板で普通に見かける煽りレスだろ
2013/03/12(火) 21:07:11.26
質問です
正規表現使うとだーって英文テキストの変換が出来るじゃないですか
そこで各英単語の頭文字のみをわーって大文字に変換したいんです
出来ますの?勿論ググりましたが、当方馬鹿なのでわかりません
サルでも分かるような回答を強く期待します
僕はこういう小バカにしたような書き方しか出来ませんが、凄く切実に知りたいです
さぁどうぞ↓
2013/03/12(火) 21:36:04.74
>>844
引用符の中の単語はどう扱いますか?
``internationalization'' 等の長い単語が改行処理で ``-'' を使用して
分割された場合はどう扱いますか?
などなど, 例外事項が多々発生します.
すべての例外事項を網羅した上で, 各条件の対応方法を明記した上で
再質問したください.
2013/03/12(火) 21:40:19.06
>>844 だけで答えられる方によるサルでも分かるような回答を強く期待します
さぁどうぞ↓
2013/03/12(火) 22:16:49.08
こいつネタであちこちに書いてるやつだから
まともに相手してもムダだよ。
2013/03/12(火) 23:24:14.34
>>844
> 正規表現使うとだーって英文テキストの変換が出来るじゃないですか
いや?
2013/03/13(水) 04:58:06.84
大抵のアプリケーションにはデフォルトで付いてる機能だよな。
MS-Wordとかさw
2013/03/13(水) 08:04:10.12
>>845
横レス済まんが、仮にクォーテーションやハイホネーション無視でいいから
単語1文字目を大文字に、って要求だったら、あんた答えられるのかね?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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