もう19時か、
2ちゃんねる ■掲示板に戻る■ 全部 1- 最新50 [PR]FLASHゲームコミュニティー「モゲラ」[PR]  

正規表現 Part6

1 :デフォルトの名無しさん:2009/05/06(水) 00:36:04
正規表現(Regular Expression)スレです。

質問する場合は実装言語や処理系ソフトウェア名を示しておくと話が早いです。

【 前スレ 】 正規表現 Part5
http://pc12.2ch.net/test/read.cgi/tech/1212498448/

557 :デフォルトの名無しさん:2009/11/06(金) 02:22:40
>>555のこと?
(?!pettern)は否定先読みという構文で、その?とは異なる意味

558 :デフォルトの名無しさん:2009/11/06(金) 02:27:13
555のこと言ってるんなら?じゃなくて
(?!expression) 後方不一致指定でしょ

559 :デフォルトの名無しさん:2009/11/06(金) 02:29:26
理解できました。
ありがとうございます。

560 :デフォルトの名無しさん:2009/11/08(日) 23:04:00
PHP5で文字コードはEUCです。
全角半角が混ざった文字列の中から、@******という部分を取り出したいと思っています。
・@の前にはどんな文字があってもいい
・******は半角英数とアンダーバー(_)が使える
・******の後ろにスペースか全角文字かアットマーク(@)が付いたら終わり
という条件で取り出したいのですが、うまくいきません。
@\w+[^ ][\x01-\x7E]
では無理でした。
どのような式を書けばいいのでしょうか?

561 :560:2009/11/08(日) 23:10:48
具体的には、

こんにちは@Abc_123@Def_456 今日はいい天気

を、

こんにちは[hoge][hoge]今日はいい天気

に置換したいって事です

562 :デフォルトの名無しさん:2009/11/09(月) 01:21:51
>>560
@[_\w]+
でいいんじゃない?


563 :デフォルトの名無しさん:2009/11/09(月) 02:50:08
>>562
\w には _ も含まれてるとおも。

564 :560:2009/11/09(月) 17:24:29
>>562
>>563
ありがとうございます。@[\w]+で出来ました。
まだまだ正規表現は初心者ですが、流石にこれが出来ないのは情けない・・・・・・・

565 :デフォルトの名無しさん:2009/11/09(月) 17:26:42
@\w+

でおk

566 :デフォルトの名無しさん:2009/11/11(水) 23:08:14
●正規表現の使用環境
VB.NET
●検索か置換か?
検索
●説明
拡張子をtxt,jpg,gifなど複数の種類を指定してURLを検索したい
●対象データ
http:****/****/****/12345.jpg
http:****/****/****/12345.exe
http:****/****/****/12345.gif
http:****/****/****/12345.txt
http:****/****/****/12345.bmp
●希望する結果
http:****/****/****/12345.jpg
http:****/****/****/12345.gif
http:****/****/****/12345.txt
現在
http://[\w\d/%#$&?()~_.=+-]+\.jpg
jpgの場合は上記のように書いてありますが、別の拡張子を追加していくにはどうやって書けばよいでしょうか?
http://[\w\d/%#$&?()~_.=+-]+\.jpg|gif
だと、
http:****/****/****/12345.jpg と
g
にヒットするのですが、[jpg|gif] [(jpg)|(gif)]やURLの部分をカッコで囲んだりしてみましたがだめみたいです。
http://[\w\d/%#$&?()~_.=+-]+\.jpg|http://[\w\d/%#$&?()~_.=+-]+\.gif ・・・・・・・
と書けば良いのですが、長くなってしまいます。
拡張子だけを書き足す方法があれば教えていただけないでしょうか。


567 :デフォルトの名無しさん:2009/11/11(水) 23:17:11
\.(jpg|gif)

568 :デフォルトの名無しさん:2009/11/11(水) 23:24:08
できましたー
ありがとう。
でもこれ試した気がしたんだが・・・

569 :デフォルトの名無しさん:2009/11/12(木) 07:24:52
性器表現

570 :デフォルトの名無しさん:2009/11/12(木) 22:18:10
$hoge = "0123456789ABCDEF012";
$hoge =~ s/.*?([0-9A-F]{16}).*?/$1/i;
print $hoge;

とにかく16進ぽい文字列を16文字で切り出したいので
上みたいに書いたんだけど、切り出せません。
どこが間違ってるかわからないので助けて

571 :デフォルトの名無しさん:2009/11/12(木) 22:42:35
$hoge = "0123456789ABCDEF012";
$hoge =~ /([[:xdigit:]]{16})/;
print $1, "\n";

572 :デフォルトの名無しさん:2009/11/12(木) 22:43:43
$hoge = "0123456789ABCDEF012";
$hoge =~ s/.*?([0-9A-F]{16}).*?//i;
print $hoge;
print $1;
としてみりゃ原因わかるんじゃね?

?外して文頭文末明示すればおk

573 :デフォルトの名無しさん:2009/11/14(土) 17:16:59
「秀丸エディタ」の正規表現の置換がうまくいきません。

作業内容は、
(1)Excelで作成した表を、タブ区切りのテキストデータとして保存し、
(2)「秀丸エディタ」でそのテキストデータを開き、
^(先頭文字)⇒¥t¥t¥t
に全置換しようとしました。

もともとテキストデータであったファイルを置換するときはうまくいきますが、
Excelからエクスポートしたテキストデータは、先頭行を認識してくれないのでしょうか。
どうすれば、先頭行を置換できるでしょうか。

よろしくお願いいたします。

574 :デフォルトの名無しさん:2009/11/15(日) 01:24:50
先頭文字なのか
先頭行なのか
どっちかハッキリしろ


575 :デフォルトの名無しさん:2009/11/15(日) 10:10:28
>>574
先頭文字です。
Excelからエクスポートしたテキストに対して^がないと言われてしまうんです。

576 :デフォルトの名無しさん:2009/11/15(日) 11:33:20
マルチラインの問題とみた。
マルチライン有効になってる?

577 :デフォルトの名無しさん:2009/11/16(月) 00:48:19
>>576
ありがとうございます。
マルチラインの設定は秀丸側の設定ですか?
それともExcelでしょうか?
初心者ですみません。
早く秀丸を使いこなさないと、ソース書くときに便利なのにもったいないですね。

578 :デフォルトの名無しさん:2009/11/16(月) 12:20:02
>>577
そんなのどんな初心者でも人間なんだから
「マルチライン 秀丸」と「マルチライン Excel」で検索かけたり、設定見れば大体予想は付くと思うが、
少しは自分の手、動かした方がいいぞ、反感買うから

579 :デフォルトの名無しさん:2009/11/16(月) 12:27:26
パソコン買ったら最初に覚えること。
それは
     検索
だ!

580 :デフォルトの名無しさん:2009/11/16(月) 12:28:49
まさか、「□正規表現(R)」 をチェックしてないとかいうオチじゃないだろうな

581 :デフォルトの名無しさん:2009/11/19(木) 07:06:23
>>577です。
皆さんありがとうございます。
マルチライン、秀丸、excel、テキストなどで検索したのですが、
どこでマルチラインの有効無効をセットできるのか分かりません。
エクセルの各々のセルは、セル内改行を認めていません。
教えていただけないでしょうか。
よろしくお願いいたします。


582 :デフォルトの名無しさん:2009/11/19(木) 07:43:49
>>575
> Excelからエクスポートしたテキストに対して^がないと言われてしまうんです。

>>580は?

583 :デフォルトの名無しさん:2009/11/19(木) 07:45:52
念のために書いておくと
置換の時に出てくるダイアログに>>580のチェックボックスがある

584 :デフォルトの名無しさん:2009/11/19(木) 09:31:15
任意の1文字(なくてもOK)ってのはどうやるの?
「.*」だと文字数制限ないし...

585 :デフォルトの名無しさん:2009/11/19(木) 09:43:31
一般的には(|.)かな。perl互換なら.?

586 :デフォルトの名無しさん:2009/11/19(木) 09:47:17
.+

587 :デフォルトの名無しさん:2009/11/19(木) 10:06:15
改行と空白(全角&半角)以外すべての文字って一気には表現できない?

588 :デフォルトの名無しさん:2009/11/19(木) 10:42:56
[^\n\s]+
改行またはホワイトスペース(半角スペースとTAB含む)以外の1文字
(改行もホワイトスペースだから複数行対象のときは\n不要かもね)

[^\n\s ]+
全角スペースは文字コードにもよると思うので処理系依存かな

589 :デフォルトの名無しさん:2009/11/19(木) 18:44:49
>>584

.?

590 :デフォルトの名無しさん:2009/11/20(金) 01:22:54
>>587
なんで >>1 を読まないかな?

591 :デフォルトの名無しさん:2009/11/21(土) 08:57:37
>>583
そこはチェックを入れています。
別のcsvで試したら、1行目のタイトル行だけ先頭行を認識し、2行目からのデータ行の先頭行は認識しませんでした
(T_T)。

592 :デフォルトの名無しさん:2009/11/21(土) 09:31:53
だから、マルチラインがtrueになってないんだろ。

593 :デフォルトの名無しさん:2009/11/21(土) 09:37:18
どうもやりたいことがよくわからんな

594 :デフォルトの名無しさん:2009/11/21(土) 09:55:04
困ってるという割にのんびりしてるな

そういう独自の用語じゃなくて
どういうデータをどうしたいのか具体的に書いて
秀丸スレでもう一度聞いたほうがマシな気がする

595 :デフォルトの名無しさん:2009/11/21(土) 10:51:27
マルチラインが無効になってりゃ、改行記号が無視されるんだから、
先頭以外の改行は改行とみなされないんだよ。

だから2行目以降の先頭は、先頭とみなされていない。
改行記号に続く文字列って事。
改行記号を改行記号として認識させるのがマルチライン。

マルチライン問題じゃなかったらお手上げ。

596 :デフォルトの名無しさん:2009/11/21(土) 11:08:48
せめて >4のテンプレ埋めるくらいはしてくれんと。
Excel、秀丸共に現役バージョンが混在してるソフトなんだし
環境晒しもせず、できませんできません言われてもどうしようもない

WinXPSP3 / Excel 2002(Office XP) SP3 / 秀丸8β25 (HMJRE V2.06)
とりあえず↑の環境では
・Excelコピー→秀丸へペースト
・名前を付けて保存:テキスト(タブ区切り)→秀丸で開く
のどちらでも問題なくできたよ。

597 :デフォルトの名無しさん:2009/11/21(土) 12:28:52
マルチライン、マルチラインって言ってるヤツ、バカじゃねぇの?

598 :デフォルトの名無しさん:2009/11/21(土) 14:49:56
●正規表現の使用環境
Java1.6

●検索か置換か?
検索

●説明
雑多な文字列からスラッシュで終わるURLを抽出したい

●対象データ
今日はhttp://abcd.efgh/abc/でご飯を食べました
そしたらhttp://12345/abc/index.htmlなスープが出てきてビックリ
おまけにhttp://aiueo/test/xxx.imgこんなデザートまで

●希望する結果
http://abcd.efgh/abc/


599 :598:2009/11/21(土) 15:27:20
●パターン
(http://|https://){1}[\w\_\.\-/:\#\?\=\&\;\%\~\+]+/[^A-Za-z0-9\_\.\-/:\#\?\=\&\;\%\~]

●結果
http://abcd.efgh/abc/


最後に一文字付いてしまいます
どうやって付かないようにすれば良いでしょうか

600 :デフォルトの名無しさん:2009/11/21(土) 17:14:20
否定の先読み使え

601 :デフォルトの名無しさん:2009/11/24(火) 03:17:06
2 文字目以降にマッチする正規表現はどのように記述したら良いですか?
例えば "abcXdXefgXXhij" という文字列の、2番目以降全ての "X" にマッチするようなものです。
基本的そうなのですが、ちっとも思いつきませんでした。

602 :デフォルトの名無しさん:2009/11/24(火) 09:13:58
2文字目以降ってのが何を指してるのかわからんな。
その例だとどれにマッチすればいいんだ?

603 :601:2009/11/24(火) 09:43:31
>>602

すいません、いろいろ書き忘れてました。
こんな感じです。

- 使用環境: AutoHotkey 1.0.48
- 使用法: 検索
- 説明: 下記にある文字 X を、最初だけ残して残りを Y に置換したい

"abcXdXefgXXhij" -> "abcXdYefgYYhij"


604 :デフォルトの名無しさん:2009/11/24(火) 09:55:19
AutoHotKeyならRegExReplaceで開始位置を指定できるので、
最初のXの次の文字からにすりゃいいんじゃねーの?

605 :601:2009/11/24(火) 10:14:23
>>604
そうでした、ありがとうございます。
こんな感じでできました。

RegExReplace(str, "X", "Y", temp, -1, InStr(str, "X") + 1)

606 :デフォルトの名無しさん:2009/11/24(火) 19:44:10
IPv6かどうかを調べる正規表現ってどこかにサンプルある?

144 KB [ 2ちゃんねる 3億PV/日をささえる レンタルサーバー \877/2TB/100Mbps]

■ おすすめ2ちゃんねる 開発中。。。 by FOX ★
このスレを見ている人はこんなスレも見ています。(ver 0.20)
SQLite 8 [データベース]

新着レスの表示

掲示板に戻る 全部 前100 次100 最新50
名前: E-mail (省略可) :


read.cgi ver 05.0.7.8 2008/11/13 アクチョン仮面 ★
FOX ★ DSO(Dynamic Shared Object)