X



正規表現
■ このスレッドは過去ログ倉庫に格納されています
0708ウサチャソ ◆/0IEZmXnQ6
垢版 |
2008/03/17(月) 21:53:04
>>702
ゼロサプレス 正規表現
とか
ゼロパディング 正規表現
とかでググってみるといいかモナー
最近sedは使ってないから漏れはやり方知らんw
0715名無しさん@お腹いっぱい。
垢版 |
2008/06/02(月) 10:30:14
Vimでファイルの中からhttpで始まり、htmlで終るURLを抜きだしたいのですが、
どのようにすれば可能でしょうか?
いろいろと試してはいるのですが、行中の最大にマッチする等なかなかうまくできません。
0717名無しさん@お腹いっぱい。
垢版 |
2008/06/03(火) 08:27:21
emacs(の置換)と
perlのそれぞれで、

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

「ASCII文字を含まない文字列」でもOKです。
0718名無しさん@お腹いっぱい。
垢版 |
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::).
0719名無しさん@お腹いっぱい。
垢版 |
2008/06/03(火) 14:36:53
>>718

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

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

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

(どういうわけか
[:multibyte:]や[:nonascii:]
という指定は
C-u C-s などではうまく動いてくれないようなのですが・・・
(ascii文字の一部にマッチしてしまう)
0720名無しさん@お腹いっぱい。
垢版 |
2008/06/03(火) 14:41:33
>>719
> (どういうわけか
> [:multibyte:]や[:nonascii:]
> という指定は
> C-u C-s などではうまく動いてくれないようなのですが・・・
> (ascii文字の一部にマッチしてしまう)

[[:multibyte:]] としんとだめやよ。
0722名無しさん@お腹いっぱい。
垢版 |
2008/09/04(木) 15:15:43
ttp://codezine.jp/article/detail/1573
やたら難しいのですが。
詳説正規表現を読めば、解けるようになりますかね?
0726わいきむら
垢版 |
2008/10/20(月) 09:09:22
空の文字クラス'[]'はどういう意味になりますでしょうか?
あと'-'が文字クラスの最後にある場合もダッシュとマッチせよ
という意味になるのでしょうか?
0727わいきむら
垢版 |
2008/10/20(月) 09:12:46
すみませんダッシュじゃなくてハイフンですか
0728船木康博
垢版 |
2008/10/20(月) 09:14:08
さーてと、
パソコンに於ける衛生面についてカキコして、
とりあえずここらでアクティブソナーにQSYするかなー♪

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

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

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

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

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

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

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

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

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


.....なんでこんなことに.....orz orz orz
0737名無しさん@お腹いっぱい。
垢版 |
2008/11/19(水) 14:37:34
>>735
正規文法(正規言語)には定義があるけど
正規表現に「数学的に厳密な定義」は存在しないと思うんだけどねー
まあ>>51でがいしゅつだったからどうでもいいや
0738名無しさん@お腹いっぱい。
垢版 |
2009/04/26(日) 16:15:06
教えていただけますでしょうか。

1(文字列A)文字列B

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

にするのはどう書けばよいのでしょうか。
文字列A、文字列Bとも長さは不規則です。
0741名無しさん@お腹いっぱい。
垢版 |
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のいづれかとする。

お願いします。
0743名無しさん@お腹いっぱい。
垢版 |
2009/05/18(月) 22:21:54
8桁の10進数を文字列とみなしたとき、
下2桁が"00"でない文字列をヒットしたい。如何すればよいか?
0746名無しさん@お腹いっぱい。
垢版 |
2009/06/03(水) 22:23:08
正規表現でアルファベット6文字というのはどう書けばいいでしょう?

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

これじゃださいですよね?
0754名無しさん@お腹いっぱい。
垢版 |
2009/06/17(水) 02:14:08
書き込み禁止されてた。

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

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

0755名無しさん@お腹いっぱい。
垢版 |
2009/06/17(水) 08:44:18
文字列の範囲はロケールに依存する。例えば、エストニア語のアルファベット
では、s の後に z があり、その後は t、u、v、w、x、y と続くので、[a-z] で
はすべての小文字のアルファベットにマッチしない
0759名無しさん@お腹いっぱい。
垢版 |
2009/06/26(金) 18:09:55
それだけだとかわいそうなので補足すると、
>>754 が言ってるのは case sensitivity の問題じゃないよ。

>>754 のレスの「aAbB….yYz」をよーく目をこらしてみてごらん。
ロケールによってはこういう不思議現象が起こるのよという話。
0762名無しさん@お腹いっぱい。
垢版 |
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'
0763名無しさん@お腹いっぱい。
垢版 |
2009/09/19(土) 19:51:30
こうやれば望みどおりの結果は出たのですが、
汎用性が低いのでもっとちゃんとしたのを作るにはどうしたらいいですか?

#!/bin/awk -f
BEGIN { FS="((|)|\\(|\\)|、| | +)" }
{
{print $1"("$3"、"$2$4")";}
}
0765名無しさん@お腹いっぱい。
垢版 |
2010/06/02(水) 05:32:30
0767名無しさん@お腹いっぱい。
垢版 |
2010/09/23(木) 21:58:59
行頭にある>以外の>を置換したいのですが、どのように記述できるでしょうか?
0769名無しさん@お腹いっぱい。
垢版 |
2010/10/03(日) 22:07:49
>>767
行頭にもし「>」が複数有れば二ツ目以降を削除する処理と
「>」以外が一文字以上続いてから「>」が一文字以上出現する文字列を
「>」以外が一文字以上続いている部分に置換する。
以上。
0771名無しさん@お腹いっぱい。
垢版 |
2010/10/11(月) 21:58:34
>>770

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

文章の表面ではなく、コンテキストを嫁。
0773名無しさん@お腹いっぱい。
垢版 |
2011/01/11(火) 08:29:20

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

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

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

0774名無しさん@お腹いっぱい。
垢版 |
2011/01/11(火) 15:02:53
>>773
入れ子になった括弧には未対応。
(replace-regexp "(\\([^\\(]*[[:multibyte:]][^\\)]*\\))" "(\\1)")

# pLaTex で otf 使えば大丈夫だったような?
0775名無しさん@お腹いっぱい。
垢版 |
2011/01/11(火) 17:55:06
ありがとうございます。うまく動くようです。

OTFパッケージの方は実験してみましたがやっぱり()と()は区別しているような・・・
0776名無しさん@お腹いっぱい。
垢版 |
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)を除外するにはどうすればいいのでしょうか?
ご回答お願いします。
0778776
垢版 |
2011/03/12(土) 15:37:35.48
>>777
あ、なるほど
確かにそれでもいけますね
さんくすです

ちなみに正規表現で特定の単語だけ除外っていうのはできないのでしょうか??
0780名無しさん@お腹いっぱい。
垢版 |
2011/03/29(火) 11:43:28.27
すっごく基本的なことで申し訳ないんだけど
aaaを含んでいてbbbを含まない行
ってのはどう書くんですか。
0785784
垢版 |
2011/03/29(火) 12:30:38.86
かぶったか
0787名無しさん@お腹いっぱい。
垢版 |
2011/04/08(金) 01:34:57.59
vimの置換で以下のようなデータを置換したいです
hoge(半角空白*****)\tsage\t

hoge\tsage\t

:%s/ //g だとhogeが ho ge だったりもするので
半角空白が続く\tを\tにしたいです。
どなたかご教示お願いします
0789 忍法帖【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]]
とやってみたのですがうまく行きません。(´;ω;`)
どう表現すればいいでしょう。
0795名無しさん@お腹いっぱい。
垢版 |
2012/03/07(水) 21:00:09.49
gsedをターミナルで実行したとき、
丸数字の1〜20が[\x{2460}-\x{2473}]でマッチせず
「無効な範囲の終端」というエラーメッセージが出ます。
何を間違えているのでしょうか。
0796名無しさん@お腹いっぱい。
垢版 |
2012/03/07(水) 22:36:48.15
>>794
> :%s/ //g
当人がチャレンジした結果がこれだから、タブ区切りの各値をtrimしたいんだろうと思うよ。

> 半角空白が続く\tを\tにしたい
ってことだから>>788でいいと思う。でも>>788の後半は違うと思う。
0798名無しさん@お腹いっぱい。
垢版 |
2012/03/08(木) 05:24:46.29
>>795の自己レス
よく解らないのだけど、コードでなくそのまんま@からS(文字化けしていたらごめんなさい)
まで、1行ずつの置換行を書き並べたらうまくいきました。
コードだと1行ずつ書いてもダメでした。エラーは出なかったからコード間違えたかな。
0799名無しさん@お腹いっぱい。
垢版 |
2012/05/27(日) 23:08:25.45
linuxのgrepでgreenとつく単語を検索したいのですが、どういう正規表現を使えばよいのでしょうか
0801名無しさん@お腹いっぱい。
垢版 |
2012/11/13(火) 18:47:33.56
リンゴ 1個
ミカン 2個
イチゴ 1個
スイカ 1個
スイカ 3個
ナシ
トマト
トマト
トマト
パイナップル
0802アップミス失礼しました
垢版 |
2012/11/13(火) 18:51:10.04
リンゴ 1個
ミカン 2個
スイカ 1個
スイカ 3個
イチゴ 2個
トマト 1個
トマト 3個
トマト 5個

リンゴ 1個
ミカン 2個
スイカ 1個 3個
イチゴ 2個
トマト 1個 3個 5個
のように整理したいとき、正規表現で実現可能ですか?
0805名無しさん@お腹いっぱい。
垢版 |
2012/11/16(金) 20:13:34.67
リンゴ 1個
スイカ 1個
ミカン 2個
スイカ 3個
イチゴ 2個

元データがこうなってない前提ならできるかもしれない
■ このスレッドは過去ログ倉庫に格納されています