ベストアンサー 正規表現で 2005/03/22 23:22 文字列 $x.',' が $y の最初の部分に含まれた時真になるような式はどんな式でしょうか? 例えば $x='abc'; $y='abc,de'; のとき真になる式です $x=~/$y,/ でいいのでしょうか? みんなの回答 (2) 専門家の回答 質問者が選んだベストアンサー ベストアンサー retr ベストアンサー率75% (30/40) 2005/03/23 00:09 回答No.1 $y =~ /^$x,/ です。 質問者 お礼 2005/03/23 01:12 ありがとうございます xとyを入れ替えてしまって^も抜けていました 通報する ありがとう 0 広告を見て他の回答を表示する(1) その他の回答 (1) moon_piyo ベストアンサー率60% (88/146) 2005/03/23 00:47 回答No.2 $xにメタ文字が含まれる可能性はありますでしょうか 例 'x+y', 'a[3]', '(1)'; いちおう\Q~\Eもつけたほうがいいかもです $y =~ /^\Q$x\E,/ 質問者 お礼 2005/03/23 01:14 ありがとうございます 今回は1の回答でいいので今後の参考にさせてもらいます 通報する ありがとう 0 カテゴリ [技術者向] コンピュータープログラミング・開発Perl 関連するQ&A 秀丸で正規表現を使って置換 あるファイルに関して、このような置換を行いたいです。 abc/xxx,yyy,zzz.html ↓ abc/xxx.html xxxとyyyとzzzはある任意の文字列(英数字で文字数はばらばら)で 「abc/」と「,」と「.html」は固定の文字列になります。 そこで、秀丸で開いて、正規表現による検索で、 「abc/.*,.*,.*.html」 として検索すると、該当部分が検索できることがわかりましたが、置換後をどのように設定すればいいのかわかりません。 置換後のabc/xxx.htmlの「xxx.html」の部分は検索前の任意の文字列をそのまま残したいのです。 秀丸の置換機能でこのようなことは可能でしょうか? 正規表現に関してあまり詳しくないので教えてください。 正規表現で 正規表現で、英大文字と記号だけからなる文字列、を表すにはどうすればよいでしょうか。言い方を変えると、とにかく英小文字は含まないという事なんですが… [^a-z]+ かなと思ったのですがダメでした。 123#ABC : OK 123#aBC : NG みたいな感じです。 よろしくお願いします。 正規表現 たのしいRuby たのしいRubyを買ってきて勉強しているのですが、 分からなくて躓いてきて、だんだん楽しくなくなってきたので 誰か教えてください。 ■1.P268 □パターン / ^(ABC)?$ / □文字列 "" □マッチする部分 "→←" となっているのですが、ABCが繰り返されてもいないのにマッチしている理由が分かりません。 ■2.P268 □パターン / ^(ABC)?$ / □文字列 "ABCABC" □マッチする部分 "マッチしない" となっているのですが、ABCが繰り返されてもいるのにマッチしない理由が分かりません。 ■3.P272 □パターン / (ドット)(/d/d)+(ドット) /=~ "123456" p $1 # => "1" p $2 # => "45" p $3 # => "6" となっているのですが、p $2 # => "45"と書かれている理由が分かりません。(p $2 #= > "23"だと思うのですが…) ■4.P272 □パターン /(ドット)(?:/d/d)+(ドット)/ =~ "123456" p $1 # => "1" p $2 # => "6" となっています。しかし、p $2 は、(ドット)(?:/d/d)+(ドット)/ の部分を指すのだと思っているのですが、何がどうなっているのかさっぱり分かりません。 正規表現についての質問です たとえば abc="5565" def="546434" abc="4523" def="459473" abc="3454" def="796812" というようなabcとdefの値を表す文字列があります。 サクラエディタを使い、これらの中から abc="任意の数字"という文字列をを全て選択したいのですが、 なかなかうまくいきません。 どなたかやり方を知っておられましたら教えていただけませんか。 宜しくお願いします>< 「マッチしない」正規表現の書き方 正規表現について、おたずねします。 文字列 abc,def,ghi のいずれかにマッチする正規表現は (abc|def|ghi) ですよね。 それでは、「abc,def,ghi のいずれにもマッチしない」正規表現は、どう書けばいいのでしょうか? あちこち調べましたが、どうしてもわかりません。 ただし、if $a =~ /(abc|def|ghi)/ などで、=~ を !~ に直す、というのはナシです。あくまでも右辺の式の中で表現したいのですが… 正規表現で括弧にマッチさせたいのですが・ Javaで正規表現を使おうとしてるのですがうまく行きません。 次のようにマッチさせたいです。 マッチさせたい文字列 : (abc)and(efg) マッチする文字列 : abcとefg マッチさせたい文字列 : (abc(efg)) マッチする文字列 : abc(efg) もしくは abc(efg)とefg とのようにまっちさせたいです。上の方はできたのですが、下の方がabc(efgとマッチしてまうのです。 いい方法を教えてください><お願いします。 正規表現検索 Javaのソースコード内から特定の単語を検索したいのですが、 このとき、以下の条件があります。 (1)ブロックコメント内を無視する (2)行コメント内を無視する (3)変数文字列内を無視する 01 /* 02 * ここの abc はブロックコメント内なので無視する 03 * 04 */ 05 public class Foo() { 06 private int abc = 0; 07 08 public Foo() { 09 // 行コメント内なのでここの abc を無視 10 abc = 1; 11 String s = "変数文字列内の abc これも無視"; 12 } 13 14 public String get() { 15 return " 1'23\" abc " + abc; // この場合後ろの abc のみヒット 16 } 17 } 例えば、上記のテキストで abc を検索したとき、 6、10と15行目の後ろの3箇所のみヒットさせたいのですが、 これはどのように正規表現で記述すればよいのでしょうか。 /* で始まり、*/ が記述されるまでがブロックコメントです。 // があったら、その行末までが行コメントです。 " で囲まれた中が変数文字列です。文字列内の \" は無視します。 よろしくお願いいたします。 正規表現での置換 <input class="abc" type="text" value="abc" name="abc" id="abc"> といった文字列があるのですが、 「class="abc" type="text" value="abc" name="abc" id="abc"」 の部分は任意の英数字が入ります。 終了タグの前に スペースとスラッシュを入れて <input class="abc" type="text" value="abc" name="abc" id="abc" /> に置き換えたいと思います。 よろしくご教授お願いできませんでしょうか? 複数行をヒットさせる正規表現 ~ 省略 ~ ==abc== ! ああ !: あいうえお ! いい !: いうえおあ ==def== ~ 省略 ~ とあった時、==abc==から==def==の間を全て取得したいのですが、 どうにも改行文字の所で止まってしまい、==abc==までしか 取得する事が出来ません。 ~ 省略 ~部分は全く同じ形式で文字列が大量にありますが、 ==abc==、==def==は1箇所にしか存在しません。 どういう正規表現をすれば上記全ての文字列を取得する事が出来るのでしょうか? 正規表現 $ grep -E ^a.*$z abc.txt ある書籍の中で、上記のコマンドでマッチする文字列として、 "az"が挙げられているのですが。 "."は一般に任意の1文字と説明されていますが、"az"では"."がゼロ文字として扱われているように思えるのですが。任意の1文字にはゼロ文字も含まれるのでしょうか? PHP 正規表現による文字列の抜き出しについて PHP 正規表現による文字列の抜き出しについて 初歩的な質問で申し訳ありません。いくつかググったのですが、それでも自分の求める形を見つけられず質問させて頂きました。 「あいうえおかきくけこさいすせそ $abc12345678 $99999 たちつてと」 このような文字列の時に、 『$abcで始まって半角スペースで終わる所までの部分を抜き出す』には、 どのように記述すれば宜しいでしょうか。 (上記の文字列の場合は、「$abc12345678」を抜き出したいことになります。) よろしくお願いします。 正規表現に関して 指定のファイルがない、あるいは、指定ファイル内に「abc」という文字列が含まれていない場合には、そのファイルに「abcd」という文字列を保存したいのですが、(例えば下記のように)色々と試したのですが、上手く動作しませんでした。私の考え方か記述方法に間違いがあると思うのですが、正しい記述方法をご教授いただけないでしょうか。恐れ入りますが、よろしくお願いいたします。 ###ファイルからデータを取り出す $fileA="data.dat"; #ファイル名の指定。 open(FILEA, "$fileA"); #ファイルを開く @allbodyA = <FILEA>; #ファイル内のデータを配列に close(FILEA); #ファイルを閉じる $tmpA=@allbody; #配列のデータを変数に ###文字列検索による分岐 unless($tmpA=~ /abc/){ #「abc」が含まれているか確認してるつもりです $tmpA="abcd"; #(含まれてないときはファイルに「abcd」を保存したい。) @allbodyA=$tmpA; #print "作成成功"; ###ファイルにデータを保存 open(FILEA, ">$fileA"); #ファイルを開く print FILEA @allbodyA; #ファイルに配列「abc」を close(FILEA); #ファイルを閉じる } 申し訳ございませんが、何卒よろしくお願いいたします。 「何とかで始まり、何とかで終わる」正規表現は? 例えば、kitaという文字列で始まりminamiという文字列で終わる部分を検索したい場合、どのような正規表現になるのでしょうか? 例えば、"kitahigasinisiminami"という文字列を"kfjdasudkitahigasinisiminamijuhjlkjndf"の中から検索したい場合なのですが。 よろしくお願いします。 正規表現 次の文字列の<div>タグで囲まれた部分を取得したいです。 <div>タグは一番最初のもの ------------------------------------------------------------------ <div>ここは何文字かわからない</div> このうしろにも</div>が何回かきます。 ------------------------------------------------------------------ ですので、最初に一致した</div>で終わりにしたいです。 処理時間もその後のテキストを見なくてもよくなるでしょうし。 @"<div>{.}\A(</div>))" こうした所マッチしすぎてエラーになってしまいました。 よろしくお願いしまうs。 正規表現が得意なかた教えてください 以下のような文字列から <honyarara><tekuteku>2バイト文字列</tekuteku></honyarara> の <tekuteku>2バイト文字列</tekuteku> この部分にマッチさせたいのですが ちなみに直近にあるtekutekuタグはタグの名称は色々なので、tekutekuという文字を使ってマッチはできません。 要は2バイト文字列をはさんだ直近のタグまでをマッチさせたいのです。 2バイト文字列は [^\x01-\x7E] によって得られることはわかったのですが、 それを挟んだタグまでをマッチさせる方法をお教え下さい。 テキストボックス(一行ずつ処理する方法) Visual Basic6.0 よろしくお願いします。 テキストボックスの 0001 0024 X00130.0*Y*D20.0*G050.0@ 0002 0024 X00135.0*Y*ABC20.0*G090.0@ 0003 0024 X00140.0*Y*ABC20.0*G050.0@ のような文字列から文字列"ABC"を検索して "ABC"がある行の"0024"を"0026"に置換したい 0001 0024 X00130.0*Y*D20.0*G050.0@ 0002 0026 X00135.0*Y*ABC20.0*G090.0@ 0003 0026 X00140.0*Y*ABC20.0*G050.0@ 場合はどうすれば良いでしょうか? 便利な関数や方法がありましたら教えてください。 お願いいたします。 正規表現について教えてください 正規表現について教えてください。 「①:②:③:④」コロンで区切られた文字列があります。 コロンで区切られた文字列から各コロン間にある文字列を 条件に一致したものを取り出したいのですが 例:①:②:③:④ A000::: :01::: ::AA:: :::BB B001:A1:: B002:99:: C000::ABC01: C000:::BBB01 のように、①②③④の書き方は自由で、最低どこか一つに書かれていて、 ③と④は、両方同時にかかれません。 ここで、③と④のどちらかに入っているのをとりだしたいのですが、 どのように書けばよいでしょうか。 「'.*:.*:[^|:].*:[^|:].*'」としたらダメでした。 「'.*:.*:[^].*:[^].*'」でとりだせたのですが、正しい表現でしょうか。 また、指定したもの、③と④で、 例えば、Aで始まっている、Bで始まっているを 取り出したいのですが上手くいきません。 '.*:.*:[^](A|B).*.*:[^](A|B).*' '.*:.*:[^].*(A|B).*.*:[^].*(A|B).*' '.*:.*:(A|B)[^(A|B)].*:(A|B)[^(A|B)].*' としてみたのですが、表示されません。 お願いします。 正規表現について教えてください。 正規表現について教えてください。 Oracleで開発を行っている者ですが、ネットや本で調べても わからない箇所がありましたので、ここに質問として挙げさせていただきます。 ご教示いただけると幸いです。 現在、下記のようなデータが入ったテーブルがあります。 ---------------------------------------------------------------------------------- ID | SENTENCE | REG_EXP ---------------------------------------------------------------------------------- 1 | <○○○:XXXX> | [^<][^:]+ ---------------------------------------------------------------------------------- 2 | <○○○:XXXX>→<△△△:XXXX> | ---------------------------------------------------------------------------------- 3 | ■■■■■<○○○:XXXX> | ---------------------------------------------------------------------------------- このテーブルを使って、アプリを作っているのですが、 期待動作としては、SENTENCEの列に入っている文字列を REG_EXPの列に入っているデータ(正規表現のパターン)で マッチした文字列を切り取るようにしたいのです。 例えば、IDが1の場合は○○○が切り取られるのが期待動作です。 (注.この動作は、REGEXP_SUBSTR関数を用いてSQLで実行します。) お聞きしたいのは、IDが2の場合は△△△を、IDが3の場合は○○○を、 配列の最初の要素に入れるには、正規表現をどのように記載すればよいのか、ということです。 ○、△、■、Xの部分は英数字、日本語のどれが入るのかはわかりませんが、 <や→、:などの全角記号のフォーマットはこのままになります。。 IDが2の正規表現は[^<:→]+[^<:→]+[^<:→]+ で試してみたのですが、 うまく出来ませんでした・・・。 テーブルの線の調整がうまくできず、 表が見づらくて申し訳ありませんが、 正規表現に詳しい方、ご教示をよろしくお願いいたします。 正規表現 半角英数字で、最初に数字が付く文字列に対してfalseを出す正規表現はどのように行えばよいのでしょうか? よろしくお願いします。 phpの正規表現 phpの正規表現で困っています。 下記のような文で括弧で囲まれた文字列だけを消したいのですが、 (ABC)あいうえお(DEF) /(.*)/で置換すると文章が全部消えてしまいます。 「あいうえお」だけを残したいのですがうまくいきません。何方か教えてください。お願いします!
お礼
ありがとうございます xとyを入れ替えてしまって^も抜けていました