[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 12/14 15:13 / Filesize : 194 KB / Number-of Response : 810
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

正規表現 Part5



1 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 22:07:28 ]
正規表現(Regular Expression)スレです。

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

前スレ
正規表現 Part4
pc11.2ch.net/test/read.cgi/tech/1186030400/

751 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 20:58:11 ]
C#を使っています
string か strin か stri か str か st か s
にマッチするパターンを今は↓のように書いているんですが
^s(t(r(i(n(g)?)?)?)?)?$
もっと分かりやすい書き方ってありますか?

752 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 22:42:23 ]
>>750
検索キー 「test.txt」

753 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 22:44:47 ]
>>750
/([^\/]+\/)*(.*)/ で、\1がパス、\2がファイル名。

754 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 22:54:31 ]
>>750
秀丸エディタなら↓これでいけた。他は知らん
(?<=.+/)test

755 名前:デフォルトの名無しさん [2009/02/19(木) 22:57:56 ]
>>750

test\.txt$

でどうでしょう

756 名前:デフォルトの名無しさん [2009/02/19(木) 22:59:13 ]
>>750

少し修正

test\.txt[\r\n$]

757 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 23:00:16 ]
ひどくなってるYO

758 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 00:01:43 ]
test\.txt(?=$|\b|[\r\n])

759 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 02:53:45 ]
YoutubeをダウンロードするFirefoxのuserchrome.jsスクリプトの一部なんだけど
var[ \r\n\t]+swfArgs[ \r\n\t]*=[ \r\n\t]*\{(.*,|)[ \r\n\t]*(t|'t'|"t")[ \r\n\t]*\:[ \r\n\t]*['"]([a-zA-Z\-_0-9]+=)['"].*\}
の(.*,|)の意味するところがわからない。    ↑
|って○○か××を意味するメタ文字じゃないの?なんで)の直前にあるんだろう?



760 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 03:00:42 ]
(foo|) は (foo)? と同じ意味では。

761 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 03:13:23 ]
.*0か1個以上ある?じゃあ.+と同じ?

762 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 08:04:22 ]
はあ?

763 名前:750 mailto:sage [2009/02/20(金) 08:57:02 ]
みなさんレスありがとうございます
例えが悪かったですが実現したいのはデスクトップの検索エンジンでのファイル名検索でファイル名のみで検索したいのです。
みなさんのレスを参考に思考錯誤してみます

764 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 20:27:44 ]
>>759
"t": "([^"]+)"
俺は、これで済ませてるw

765 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 21:39:41 ]
すみません(foo)?の意味がわかりません教えてください

>>764
それでいけるよねw

766 名前:デフォルトの名無しさん mailto:sage [2009/02/21(土) 21:02:25 ]
>>751
C#なら
s.Length > 0 && "string".StartsWith(s)
のようにやればいいのに。

767 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 19:43:45 ]
女のコの性器表現てどれくらいの種類があるんだろう


768 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 19:56:18 ]
単語だけならともかく、そんなのは文脈によって変わるし、
『×××』だけでもそれを表すことができる上に、『大事なところ』などボカした表現までスコープを広げると
とても現代の正規表現で賄いきれるものではない。
言語学の分野で議論してくるがいい。

769 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 18:45:51 ]
C#でWBCかワールド・ベースボール・クラシックのどちらかを含み、かつイチローか松坂のどちらかを含むline、と正規表現で
if (Regex.Match(line,"(WBC|ワールド・ベースボール・クラシック) && (イチロー|松坂)").Success)
と書いてみたのですが、いまいちうまくヒットしないです。アドバイスお願いします。




770 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 20:15:33 ]
正規表現の中に && とか画期的すぎるだろ・・・
テンプレの正規表現講座でも見ておいで

771 名前:751 mailto:sage [2009/02/24(火) 22:56:03 ]
>>766
確かにその方がわかりやすいですね
ありがとうございます

772 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 10:58:18 ]
if (Regex.Match(line, "(WBC|ワールド・ベースボール・クラシック)").Success && Regex.Match(line, "(イチロー|松坂)").Success)
でいいんじゃね?C#知らないけど。
AND増えるなら条件を配列に入れてループで。

773 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 12:46:56 ]
line = "ぽにょワールド・ベースボール・クラシックぽにょイチローぽにょ"

Set RegExp1 = new RegExp
Set RegExp2 = new RegExp
RegExp1.Pattern = "WBC|ワールド・ベースボール・クラシック"
RegExp2.Pattern = "イチロー|松坂"

If RegExp1.Test(line) And RegExp2.Test(line) Then
Wscript.Echo "うんこ"
End If


774 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 12:49:30 ]
>>772
Regex.Match の使い方が間違ってる。ちゃんと説明書読んだ?

775 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 14:22:03 ]
C#知らないと言っている人にそんな指摘してもなあ

776 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 15:22:22 ]
C# カンケーない。Regex.Match の使い方が間違ってる。

777 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 15:42:59 ]
>>769>>772

if (Regex.Match(line, "WBC|ワールド・ベースボール・クラシック").Success && Regex.Match(line, "イチロー|松坂").Success)

で良いが、IsMatchのほうが良さげ。

if (Regex.IsMatch(line, "WBC|ワールド・ベースボール・クラシック") && Regex.IsMatch(line, "イチロー|松坂"))

778 名前:デフォルトの名無しさん mailto:sage [2009/02/27(金) 19:33:25 ]
少しお聞きします。

1hage(100禿)
1hage(10毛)
1hage

という文字列があった場合に、1hage(100禿)以外をマッチさせたいのですが、
なかなかうまくいきません。
どのように正規表現を書いたものでしょうか?


779 名前:778 [2009/02/27(金) 19:34:25 ]
>>778
すいません。追記です。
具体的には、"hage"をヒットさせたいのですが、"禿"を含むもののみマッチさせないようにしたいのです。



780 名前:デフォルトの名無しさん mailto:sage [2009/02/27(金) 19:36:03 ]
1hage にマッチしたものから 1hage(100禿) にマッチするものを取り除く、
じゃダメなのか? どうしても1個の正規表現でやんないとダメ?

781 名前:デフォルトの名無しさん mailto:sage [2009/02/27(金) 20:30:52 ]
>>780
うん、やっぱりそれの方がスマートでよいですよね・・・
わかりました。

無理に正規表現だけでやらないとことにします。
ありがとうございました。

782 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 14:16:03 ]
文章中に「A」と「AA」が混在していて、
1文字だけの「A」を2文字の「AA」にします。
2文字以上連続していない、1文字だけの「A」は
どうやったら探せますか?
/A{1}/ でも駄目ですし、/A[^A]/ だと
行の中に A しかない物が引っ掛かりません。

783 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 16:40:50 ]
D:\jspsh>jspsh.exe
js> "A AA AAA".replace(/(^|[^A])A([^A]|$)/g, "$1AA$2")
AA AA AAA
js> :q
Leaving "JScript Power Shell"

784 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 21:51:49 ]
タイ━━━━||Φ|(|´|Д|`|)|Φ||━━━━ホ

785 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 23:10:33 ]
>>783
ありがとう、試してみます。

786 名前:デフォルトの名無しさん mailto:sage [2009/03/02(月) 20:45:20 ]
/(?<!A)A(?!A)/

787 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 00:28:35 ]
<A href="○○○○○○○">●●●●●</a>

<A href="○○○○○○○"><hogehogetag>●●●●●</hogehogetag></a>
という文字列から●●●●●を取り出したいのですが
どうやって書いたら良いか教えてケロ
決まってるのは<A href="○○○○○○○">の次の<>の外の文字列ということです。

788 名前:デフォルトの名無しさん mailto:sage [2009/03/07(土) 01:14:08 ]
>>5みたいに書けばいいよ

789 名前:デフォルトの名無しさん [2009/03/12(木) 17:29:29 ]
「から最初の」までってどうやって抜き出すんですか?教えてください



790 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 17:40:07 ]
「[^」]*」

791 名前:デフォルトの名無しさん mailto:sage [2009/03/12(木) 17:53:29 ]
ありがとうございました

792 名前:デフォルトの名無しさん [2009/03/13(金) 00:14:55 ]
SQL(SELECT、UPDATE、INSERT、DELETEが不明)から、
テーブル名をマッチさせる正規表現が解る方、どなたかいらっしゃらないでしょうか?

ひとつの表現で不可能なら、複数でもいいのですが…(´・ω・`)

793 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 00:25:51 ]
SQLの構文解析は正規表現じゃ無理

794 名前:デフォルトの名無しさん [2009/03/13(金) 01:07:40 ]
金額の文字にマッチするにはどう書けばよいですか?
123,456,789 ←こういうの

795 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 01:20:24 ]
\d{1,3}(,\d\d\d)* かな

796 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 08:53:14 ]
複雑な正規表現のテストってどうすればいいんだろうね。
自分に都合のいいデータだけ作ってやってるけど。
実際は何が起こっても仕方ない場合が多いのだが。


797 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 08:57:59 ]
製品名を「鼻から悪魔」にしておけば何も問題は無い

798 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 12:11:43 ]
>>796
私も以前、このスレではない所で同様の質問をしたが、真面目な答えは
返ってこなかったよ。正規表現から見るとプログラムテストは鬼門かもね。


799 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 12:21:24 ]
複雑なC言語プログラムのテストってどうすればいいんだろうね。
自分に都合のいいデータだけ作ってやってるけど。
実際は何が起こっても仕方ない場合が多いのだが。

複雑なjavaのテストってどうすればいいんだろうね。
自分に都合のいいデータだけ作ってやってるけど。
実際は何が起こっても仕方ない場合が多いのだが。

複雑なPHPのテストってどうすればいいんだろうね。
自分に都合のいいデータだけ作ってやってるけど。
実際は何が起こっても仕方ない場合が多いのだが。

複雑なバッチファイルのテストってどうすればいいんだろうね。
自分に都合のいいデータだけ作ってやってるけど。
実際は何が起こっても仕方ない場合が多いのだが。

複雑なExcelマクロのテストってどうすればいいんだろうね。
自分に都合のいいデータだけ作ってやってるけど。
実際は何が起こっても仕方ない場合が多いのだが。

・・・正規表現に限った話ではない。

>自分に都合のいいデータだけ作ってやってるけど。
問題の原因がハッキリわかってるじゃないか。それを対処すればいいじゃないか?
自分に都合のいいデータを作ってしまうのが問題なら、他人にデータを作ってもらえばいい。



800 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 12:42:08 ]
>>796
やったことはないが、本気でやるなら、こんな感じになるんだろう。

1.マッチすべきパターンについて構文木を作る
2.構文木を元に直交表を作る
3.実験計画法でテストケースを作る
4.テストケースをテストプログラム化する


801 名前:デフォルトの名無しさん mailto:sage [2009/03/13(金) 14:59:43 ]
>>799
プログラム言語の場合はステップごととか、プロセジャーや
関数に分割してテストするし、型も助けになる。
正規表現の対象としているのは文字列でここから先は構文解析
しかない。複雑な組み込みシステムの入口、出口でどんな
テストデータを用意すればよいかというのと類似した問題だ。

802 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 13:26:09 ]
www.honya-town.co.jp/hst/HTdispatch?isbn_cd=4062574993
上記のwebページから以下の「マンガホーキング入門」の部分を取り出したいのですがうまくいきません
<tr>
<td bgcolor="#efefef" width="15%" align="center" nowrap><small>
書  名 </small></td>
<td width="85%"><font color="#333399" size="+1"> <strong> マンガホーキング入門 </strong> </font></td>
</tr>

"<strong>(.+?)</strong>"だとここ以外の強調部分もマッチしてしまうので
"書.*?名.+?<strong>(.+?)</strong>"のようにしたのですがこれだとひとつもマッチしてくれません
どのようにするべきなのでしょうか?

803 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 13:28:20 ]
あれ、書 名 の部分は実際は書&nbsp;&nbsp;名です(&=>&)

804 名前:デフォルトの名無しさん mailto:sage [2009/03/17(火) 13:36:57 ]
自己解決しました
「.」は\nを含まないのでだめだったようです
"書.*?名.+?\n.+?<strong>(.+?)</strong>"でいけました
スレ汚しすみませんでした

805 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 21:51:43 ]
JavaやC#に正規表現のコンパイル機能があるけど、あれって意味あるのかな?
いつも可読性を優先してRegex.Match(data,pattern)みたいに直接使ってるんだけど、
コンパイルが必要になるほど性能が必要な正規表現ってどんなのがあるん?

806 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 22:00:44 ]
>>805
一般論的に正規表現のコンパイルというと、何度も同じ正規表現を
使うときに差が出る。
それが有意な差になるかはプロファイル取ってみないとわからないけど。

ところで可読性なら生の正規表現よりも定数とかに入れて
名付けた方がいいんじゃない?めんどくさいけど。

807 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 22:06:30 ]
>>805
perlでo使ったらうれしいときと同じだよ。

808 名前:デフォルトの名無しさん mailto:sage [2009/03/20(金) 22:09:58 ]
>>806
>ところで可読性なら生の正規表現よりも定数とかに入れて
>名付けた方がいいんじゃない?めんどくさいけど。

コード体系とかのパースの場合は定数化してるよ。
"Key: Value"なデータのパースとかはハードコードかな。
わざわざファイル移動で確認させる価値もないし。

809 名前:デフォルトの名無しさん mailto:sage [2009/03/21(土) 02:47:41 ]
ルールを変更可能にするため外部化、ってのもよくあるパターンだと思うけど。








[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<194KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef