正規表現 Part5 ..
[2ch|▼Menu]
752:デフォルトの名無しさん
09/02/19 22:42:23
>>750
検索キー 「test.txt」

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

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

755:デフォルトの名無しさん
09/02/19 22:57:56
>>750

test\.txt$

でどうでしょう

756:デフォルトの名無しさん
09/02/19 22:59:13
>>750

少し修正

test\.txt[\r\n$]

757:デフォルトの名無しさん
09/02/19 23:00:16
ひどくなってるYO

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

759:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/02/20 03:00:42
(foo|) は (foo)? と同じ意味では。

761:デフォルトの名無しさん
09/02/20 03:13:23
.*0か1個以上ある?じゃあ.+と同じ?

762:デフォルトの名無しさん
09/02/20 08:04:22
はあ?

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

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

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

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

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

767:デフォルトの名無しさん
09/02/23 19:43:45
女のコの性器表現てどれくらいの種類があるんだろう


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

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


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

771:751
09/02/24 22:56:03
>>766
確かにその方がわかりやすいですね
ありがとうございます

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

773:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/02/25 12:49:30
>>772
Regex.Match の使い方が間違ってる。ちゃんと説明書読んだ?

775:デフォルトの名無しさん
09/02/25 14:22:03
C#知らないと言っている人にそんな指摘してもなあ

776:デフォルトの名無しさん
09/02/25 15:22:22
C# カンケーない。Regex.Match の使い方が間違ってる。

777:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/02/27 19:33:25
少しお聞きします。

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

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


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

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

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

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

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

783:デフォルトの名無しさん
09/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:デフォルトの名無しさん
09/02/28 21:51:49
タイ━━||Φ|(|´|Д|`|)|Φ||━━ホ

785:デフォルトの名無しさん
09/02/28 23:10:33
>>783
ありがとう、試してみます。

786:デフォルトの名無しさん
09/03/02 20:45:20
/(?<!A)A(?!A)/

787:デフォルトの名無しさん
09/03/07 00:28:35
<A href="○○○○○○○">●●●●●</a>

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

788:デフォルトの名無しさん
09/03/07 01:14:08
>>5みたいに書けばいいよ

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

790:デフォルトの名無しさん
09/03/12 17:40:07
「[^」]*」

791:デフォルトの名無しさん
09/03/12 17:53:29
ありがとうございました

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

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

793:デフォルトの名無しさん
09/03/13 00:25:51
SQLの構文解析は正規表現じゃ無理

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

795:デフォルトの名無しさん
09/03/13 01:20:24
\d{1,3}(,\d\d\d)* かな

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


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

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


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

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

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

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

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

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

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

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

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


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

802:デフォルトの名無しさん
09/03/17 13:26:09
URLリンク(www.honya-town.co.jp)
上記の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:デフォルトの名無しさん
09/03/17 13:28:20
あれ、書 名 の部分は実際は書&nbsp;&nbsp;名です(&=>&)

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

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

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

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

807:デフォルトの名無しさん
09/03/20 22:06:30
>>805
perlでo使ったらうれしいときと同じだよ。

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

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

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


最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

4815日前に更新/194 KB
担当:undef