正規表現

■ このスレッドは過去ログ倉庫に格納されています
NGNG
正規表現
698名無しさん@お腹いっぱい。
垢版 |
2008/02/26(火) 17:23:03
Cの構造体のようにネストする可能性のあるものを正規表現で抽出するにはどうすればいいでしょうか?
2008/02/26(火) 17:26:13
無理
2008/02/26(火) 21:47:00
>>699
正解
2008/02/26(火) 22:31:20
>>696
日付の切り出しを正規表現でやって、日付の判定以降はプログラムでがんばれ。
702名無しさん@お腹いっぱい。
垢版 |
2008/03/06(木) 14:24:40
sedを使って
2007/1/2
2007/1/23
2007/12/2
2007/12/31
のデータを
2007/01/02
2007/01/23
2007/12/02
2007/12/31
にするにはどうすればいいですか

2008/03/06(木) 14:28:44
sed -e 's,/1/,/01/,' -e 's,/2$,/02,'
2008/03/06(木) 17:14:22
>>703
9日近く書き込み無いのによく質問に高速で答えられますね
尊敬するとともに変態だと思います。
2008/03/06(木) 17:15:08
別に何日書き込みがなかろうが関係ない。
2008/03/06(木) 22:36:13
>>704
今時ブラウザでみてる奇特な人かな?

別にこのスレを毎日人手でチェックしてるわけじゃなくて、
専ブラの巡回リストに入ってるだけのことだと思うよ。

まあ、確かに4分でレスするのはちょっとすごいが
よくよく見たら 2007/3/3 とかは変換しない...
ほんとにそれでいいのか? >>702
2008/03/06(木) 23:43:20
>>703もわざとその答えにしたんだろ。
要するに質問の仕方が悪いって事だ。
2008/03/17(月) 21:53:04
>>702
ゼロサプレス 正規表現
とか
ゼロパディング 正規表現
とかでググってみるといいかモナー
最近sedは使ってないから漏れはやり方知らんw
2008/03/18(火) 14:24:00
どの文字列にもマッチしない正規表現ってどう書くんでしょう?
2008/03/18(火) 16:47:03
(?<=a)a
2008/03/19(水) 09:09:37
空文字列にもマッチしない?
2008/03/19(水) 23:02:47
しないよ
というか自分で試せよ
2008/03/21(金) 00:44:43
710って、aaにマッチするよ
戻り読みの位置が違うんじゃね?
2008/03/21(金) 20:07:35
(?!a)a
こうかな
715名無しさん@お腹いっぱい。
垢版 |
2008/06/02(月) 10:30:14
Vimでファイルの中からhttpで始まり、htmlで終るURLを抜きだしたいのですが、
どのようにすれば可能でしょうか?
いろいろと試してはいるのですが、行中の最大にマッチする等なかなかうまくできません。
2008/06/02(月) 11:38:21
最短でマッチさせたらさせたで、
ディレクトリのどこかに .html があると破綻する
717名無しさん@お腹いっぱい。
垢版 |
2008/06/03(火) 08:27:21
emacs(の置換)と
perlのそれぞれで、

「日本語の文字列」を指定する正規表現が知りたいのですが、
どこを見ればよいでしょうか?

「ASCII文字を含まない文字列」でもOKです。
2008/06/03(火) 13:33:02
>>717
(info "(elisp)Regexp Backslash")
| `\cC'
| matches any character whose category is C. Here C is a character
| that represents a category: thus, `c' for Chinese characters or
| `g' for Greek characters in the standard category table.

というのがあるんだけど、C の説明が無いね。
\cj だった気がするけど、不具合があるかもしれん。

ASCII 以外だと、↓これはいかが?
(info "(elisp)Char Classes")
| `[:multibyte:]'
| This matches any multibyte character (*note Text
| Representations::).
719名無しさん@お腹いっぱい。
垢版 |
2008/06/03(火) 14:36:53
>>718

ありがとうございます。emacsのinfoではなく、
elisp infoにあるんですね。

「日本文字にはさまれたascii空白」を検索したかったので、

emacsでは"¥cj ¥cj" でだいたいよさそうです。

(どういうわけか
[:multibyte:]や[:nonascii:]
という指定は
C-u C-s などではうまく動いてくれないようなのですが・・・
(ascii文字の一部にマッチしてしまう)
2008/06/03(火) 14:41:33
>>719
> (どういうわけか
> [:multibyte:]や[:nonascii:]
> という指定は
> C-u C-s などではうまく動いてくれないようなのですが・・・
> (ascii文字の一部にマッチしてしまう)

[[:multibyte:]] としんとだめやよ。
2008/06/03(火) 18:33:15
あ、そういうことか!どもです。
722名無しさん@お腹いっぱい。
垢版 |
2008/09/04(木) 15:15:43
ttp://codezine.jp/article/detail/1573
やたら難しいのですが。
詳説正規表現を読めば、解けるようになりますかね?
2008/09/05(金) 01:34:49
>>722

難しいか? それ。
2008/09/18(木) 18:37:47
>>722
プログラミングperlの正規表現の解説部分を
読んでもなんとかなるかも(´・ω・`)
2008/09/28(日) 20:34:23
>>722
詳説正規表現は文字通り「詳説」。
正規表現を使うことが目的の人にはヘビーすぎる。
726わいきむら
垢版 |
2008/10/20(月) 09:09:22
空の文字クラス'[]'はどういう意味になりますでしょうか?
あと'-'が文字クラスの最後にある場合もダッシュとマッチせよ
という意味になるのでしょうか?
727わいきむら
垢版 |
2008/10/20(月) 09:12:46
すみませんダッシュじゃなくてハイフンですか
728船木康博
垢版 |
2008/10/20(月) 09:14:08
さーてと、
パソコンに於ける衛生面についてカキコして、
とりあえずここらでアクティブソナーにQSYするかなー♪

・VDT症候群に注意。
・腱鞘炎に注意。
・大音量による聴覚障害に注意。

マウスは玉の有り無しで、オスとメスがあるでよ。
光にも種類があるし、トラックボールもあるし。たまには玉の辺りの掃除でもしてやってくれ。
ボタンも林檎の1個や米窓の2個じゃなくて、SUNあたりなら3個あったんじゃねぇかなぁ。
最近じゃあ、ホイールも回転方向以外に左右に振れるのもあるでよ。

最後は、鍵盤だ。雑菌が繁殖して、便所より汚いモノもあるでなぁ。
病気移しちゃあいけねぇで、触らせる相手は自分で判断して制限しろよ。
おいもかはまぐり触った手かもしれねぇし、汁がとんでるかもしれねぇからな。
2008/10/21(火) 02:39:30
>>726

中身が空の [] はわからんが、末尾のハイフンはその通り。
範囲指定じゃなくてハイフンそのものとして解釈される。
730名無しさん@お腹いっぱい。
垢版 |
2008/10/22(水) 17:48:58
質問させてください。

Fortranのコードから、「subroutine abc()」「 subroutine abs()」のような
サブルーチンの開始行だけをgrepで抽出したくて
grep ^\s*subroutine ./*.f90
と書いたのですが、「 subroutine」で始まる行がマッチしていないようです。
どのようにしたらこれをマッチさせられるか教えてください。

ちなみに、コード内には
「! subroutine abc()」「!subroutine abc()」なども含まれています。
731730
垢版 |
2008/10/22(水) 19:23:26
>>730どなたか、ほんとお願いします!!
2008/10/22(水) 21:00:29
>>730
' とか " で括ってないとか?

話逸れるけど、grep は egrep が一番速いらしいよ。
egrep は「(・∀・)イイ!! 」grep!
なんっつってw

はぁ〜…
733730
垢版 |
2008/10/22(水) 21:25:28
>>732そのとおりでした。

grep "^\s*subroutine" ./*.f90
としたらうまくいきました、ありがとうございます。


.....なんでこんなことに.....orz orz orz
2008/10/23(木) 03:40:28
「(・∀・)イイ!! 」grep!
735名無しさん@お腹いっぱい。
垢版 |
2008/11/08(土) 14:16:27
ムズいなこれ

http://codezine.jp/article/detail/3039
http://codezine.jp/article/detail/2676
2008/11/15(土) 20:26:45
機能的にegrepのが遅そうな気がするけど
2008/11/19(水) 14:37:34
>>735
正規文法(正規言語)には定義があるけど
正規表現に「数学的に厳密な定義」は存在しないと思うんだけどねー
まあ>>51でがいしゅつだったからどうでもいいや
2009/04/26(日) 16:15:06
教えていただけますでしょうか。

1(文字列A)文字列B

というものを
(文字列A)文字列B

にするのはどう書けばよいのでしょうか。
文字列A、文字列Bとも長さは不規則です。
2009/04/30(木) 17:32:03
sed 's/^.//'
2009/04/30(木) 17:38:33
すみませんが詳しい方のみ回答をお願いします
2009/04/30(木) 18:41:27
日本語や英語など特定の文字列をgoogle検索のリンクにしたいです。
例えば、「正規表現」という文字列をgoogleのリンクにしたい場合だと、

正規表現(せいきひょうげん、regular expression)とは、
文字列の集合を一つの文字列で表現する方法の一つである。
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
<a href="http://www.google.co.jp/search?q=%90%B3%8BK%95\%8C%BB">正規表現</a>
(せいきひょうげん、regular expression)とは、
文字列の集合を一つの文字列で表現する方法の一つである。

としたいです。ただし
・繰り返し1語1語適用することで複数の単語をリンク化する
 または一発で複数の単語をリンク化する方法でもいい
・すでにリンクされているものを二重にリンクしない
・タグ内の文字列はリンク化しない
・英語は文章内の単語が完全一致すればリンク化し、
 日本語は部分一致したらリンク化する
・英語の連語には対応しなくていい。
・リンク化したい文字列が「正規」「正規言語」などのように
 「正規」⊂「正規言語」という関係のものは想定しない
使う言語はAWK、Sed、Perlのいづれかとする。

お願いします。
2009/04/30(木) 19:14:08
その質問は正規表現スレで扱う範囲を越えてます。
743名無しさん@お腹いっぱい。
垢版 |
2009/05/18(月) 22:21:54
8桁の10進数を文字列とみなしたとき、
下2桁が"00"でない文字列をヒットしたい。如何すればよいか?
2009/05/18(月) 22:33:28
[0-9]{6}[1-9]{2}
2009/05/19(火) 08:56:24
[1-9][0-9]{5}([0-9][1-9]|[1-9][0-9])
2009/06/03(水) 22:23:08
正規表現でアルファベット6文字というのはどう書けばいいでしょう?

[A-z][A-z][A-z][A-z][A-z][A-z]

これじゃださいですよね?
2009/06/04(木) 09:42:14
[A-z]{6}
2009/06/04(木) 09:57:06
[A-z]だと[\]~_`を含むよ。[A-Za-z]{6}にしなはれ
2009/06/04(木) 10:22:05
POSIX 正規表現が使えるなら [[:alpha:]]{6} とか。
2009/06/04(木) 10:29:36
POSIX文字クラスはロケール依存の罠があるから避けた方が無難と思う
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月だと…
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。