substringで文字を分割する方法と正規表現の活用

このQ&Aのポイント
  • substringを使用して文字列を分割する方法と、正規表現を使用してマッチさせた文字列を抜き出す方法についてご質問があります。
  • 具体的には、全角80桁の文字列を全角空白を利用して4分割する方法を知りたいです。
  • また、正規表現でマッチさせた文字列以降をsubstringで抜き出し、その後も同じようにして20文字以降を正規表現を利用して分割したいと考えています。どのように実装すればよいかアドバイスをお願いします。
回答を見る
  • ベストアンサー

substringで文字を分割

全角80桁の文字列を全角空白を利用して4分割したいのですが 下記にご質問内容を記載します。 String str = new String(住所漢字); Matcher j = pattern2.matcher(住所漢字); Pattern pattern2 = Pattern.compile("^.{1,20} ");で 文字列の先頭から始まって半角空白で終わる最大21文字 (最後の全角空白を含む)にマッチさせた文字列に Matcher j = pattern2.matcher(住所漢字); while(j.find()) { 正規表現で抜き出した文字列の文字カウントをチェック int mojiLength = i.group().length(); String iNewString = tmp.substring(mojiLength); out.print(j.group()+","+iNewString); として、正規表現でマッチさせた文字列以降を substringで抜き出したのですが それ以降の文字列も同じようにして substringで抜き出した20文字以降の文字列に 先に設定した正規表現を利用して分割して カンマ区切の4分割にしたいのですが この先の方法が分からず色々調べている最中です。 すいませんがぜひアドバイスお願いします。

  • Java
  • 回答数6
  • ありがとう数5

質問者が選んだベストアンサー

  • ベストアンサー
  • salsberry
  • ベストアンサー率69% (495/711)
回答No.6

> テストデータの中で例外が発見できました。 QNo.7510971のANo.1への補足で、そのような文字列(全角空白で区切ると20文字以内で4分割にできない)は「基本ありえません」と書いていたじゃありませんか。そのような入力データを作った人に文句を言ってください。 > 条件を増やして対応出来るのでしょうか?? できるかできないかで言ったらできるでしょうけど、問題の入力に対してどのような結果を得たいのかが示されていないので、コードの書きようがありません。 他にも例外的な入力データがあるかも知れないわけで、そういうものを見つけてから泥縄式に考えるのではなく、全てのあり得る入力データを場合分けするところから始めて、それぞれの場合にどのような処理をしなければいけないのかを考えてください。 なお、このような後出しじゃんけんにはいつまでもつき合っていられないので、本件への返答はこれで最後にします。

yairi1106
質問者

お礼

因みに以前お話しした 桁数20桁としてフラッグをたてる件ですが この方が 別の仕様の際に 要素数ごとに文字の長さを変えやすいので (わかりやすい) 変更しました。

yairi1106
質問者

補足

解決したことをご報告いたします。 色々なご提案をいただいて助かりました。 下記のコードに組みなおして 条件を満たしました。 提案いただいてなかったら、解決はしてなかったと思います。 あいまいな質問内容で長い間色々とお世話になり どうもありがとうございました。 String tmp_err ; //エラー用 String YousoMatch ; Integer iKeta ; Integer iKeta_Han = 20; Integer iKeta_Zen = 20; Integer iCnt_GYO =0 ; //行のカウンタ Integer FLG_ERR ; //エラーフラグ といった条件をたてて住所漢字と住所カナ表示のスイッチ切り替え(その他) str=住所漢字.replaceAll(" ",""); if (str.length() == 0){ //(2) tmp= 住所カナ.replaceAll(" +$", "")+" "; iKeta=iKeta_Han; YousoMatch="^.{1," + iKeta + "} "; tmp_err=住所カナ; //エラー用 }else{ tmp= 住所漢字.replaceAll(" +$", "")+" "; iKeta=iKeta_Zen; YousoMatch="^.{1," + iKeta + "} "; tmp_err=住所漢字; //エラー用 }; として Pattern pattern2 = Pattern.compile(YousoMatch); String result = ""; //要素数のカウントを取る //FLG_ERR=0;が4周以上回った時点でオーバーフロー FLG_ERR=0; while (tmp.length() > 0) { iCnt_GYO++; Matcher iHit = pattern2.matcher(tmp); if (iHit.find()) { String s = iHit.group(); int length = s.length(); result += s.substring(0, length-1) + ","; tmp = tmp.substring(length); } else { FLG_ERR=1; break; } }; //要素数が4つ以上の場合オーバーフローで住所の途中で分割 //スペースがない文字列も含む if ((iCnt_GYO >= 4) || ( FLG_ERR==1) ) { result=tmp_err.substring(0,iKeta) + "," +tmp_err.substring(iKeta,iKeta*2) +"," +tmp_err.substring(iKeta*2,iKeta*3) +"," +tmp_err.substring(iKeta*3,iKeta*4); 要素数の判定でカンマをつける } else if (iCnt_GYO == 1){ result= result + "," +","; } else if (iCnt_GYO == 2) { result= result + "," ; } else if (iCnt_GYO == 3) { //処理なし } else if(iCnt_GYO ==4 ){ //処理なし };

その他の回答 (5)

  • salsberry
  • ベストアンサー率69% (495/711)
回答No.5

> out.print(result1.replaceAll("[ +$]", ""));のようにしてスペースを > スペースなしと置換することが出来たのですが resultに対してではなく、分割を行う前の文字列に適用して下さい。 > > あと、この例の場合は末尾の空白を削ると2分割で足りるわけですが、実行後のカンマは必ず3つ要るのですか? > 仕様上要ります。 でしたら、そのくらいの変更は自力でどうぞ。 空白が含まれていない場合に4分割するための判定を行えるなら難しくはないはずです。 > 例えば住所桁数maxを20桁としてフラッグをたてて > 1 文字列内のスペース数をカウントし配列要素数を決定する > (以下略) 厳しい書き方になりますが、知っている用語を並べてみているだけで、やるべきことを理解できているように読めません。 たとえば、split()を使うなら1は不要な手順です。フラッグというのも何についてどういう条件のときに立てて、何の判定に使うつもりなのかが全く不明です。

yairi1106
質問者

お礼

>本当ですか?以前にも テストデータの中で例外が発見できました。 実行前→アアアアアア アアアアアア 00ー00ハハハ ハハハハハハハハハハハ アアアアアアハハハハハ ハハハハハハハハハハハ ハハハハハハハハハハハ ハハハハハハハハ こういったデータの場合、スペースを利用して4分割することが出来ないのですが 20ケタを目安にして、5分割にならないように住所の途中で、区切ってでも構わないという 条件を増やして対応出来るのでしょうか??

yairi1106
質問者

補足

アドバイスどうもありがとうございます。 > >> あと、この例の場合は末尾の空白を削ると2分割で足りるわけですが、実行後のカンマは必ず3つ要るのですか? この質問をされた意味が resultに対してではなく、分割を行う前の文字列に適用してから 分かりました。 提示したこの文字列ですと 立川市 上砂○ 0-00-0 ハハハハハハハハハ ハハハ 2分割になってしまいますから >でしたら、そのくらいの変更は自力でどうぞ。 空白が含まれていない場合に4分割するための判定を行えるなら難しくはないはずです。 提示していただいた構文にはたして 空白に含まれてない場合4分割に出来るかは まだわかりませんが if (住所漢字.compareTo (" ") != 0) { out.print(住所漢字.substring(0,20)+","+住所漢字.substring(21,40)+","+住所漢字.substring(41,60)+","+住所漢字.substring(61,80)); とこんな単純じゃないですからね。 そういった場合の4分割も私の知識だと時間がかかりそうです。 >厳しい書き方になりますが、知っている用語を並べてみているだけで、やるべきことを理解できているように読めません その通りだと思います。 VBAのプログラマが書いたコメントを省略して書いただけですから。 ほんとはVBAのプログラムを移植できればよいのですが そんな技量私にはありませんから 長い間にわたってお世話になっているって感じになってます。

  • salsberry
  • ベストアンサー率69% (495/711)
回答No.4

> 正規表現を考えれば > 記載して頂いたコードでも > 私がイメージしてる分割も出来ると思うのですが・・・ 無理。split()では、どんな文字(文字列)を使って区切るのかを正規表現で表すだけです。今回のように「全角空白で文字列を区切りたいんだけど、その長さには条件があって、その上区切った後の文字列の中に全角空白が残っていてもよい」なんて複雑な処理をこのメソッドで行うことはできません。 split()を使うなら、ANo.3さんも書いているように「全角空白で一度分割した後、文字列長をチェックして条件に合うように再結合する」という手順を踏むことになります。 > 実行前→   立川市 上砂○ 0-00-0 ハハハハハハハハハ ハハハ > 実行後→   立川市 上砂○ 0-00-0(14桁), ハハハハハハハハハ ハハハ(スペースを含めた20桁,(スペース20桁),(スペース20桁),(スペース2桁) 実行前の文字列は長さが80文字になるように末尾に空白がついているなんて前提、上の例にも書かれていませんよね。 あと、この例の場合は末尾の空白を削ると2分割で足りるわけですが、実行後のカンマは必ず3つ要るのですか? > あとスペースを詰めることが出来れば > すべてが解決すると思われます。 本当ですか? 以前にも指摘したとおり20文字以下の文字列4つには分割できない入力例はいくらでも作れますから、そのような場合に対応するためのコードをわんさか足さないといけないと思います。 ちなみに、文字列の末尾にある1文字以上の全角空白にマッチする正規表現は" +$"です。Matcherクラスのreplace()メソッドでも使って消してください。

yairi1106
質問者

お礼

知っている単語を並べているだけと言われたらそれまでですが 正規表現にマッチさせた結果 if (result○○○) {             //resultの要素数1個の時は、 out.print(result+","+","+",");  //kannmaを3つ増やし要素数4に修正 } else if (result○○○) { {    //resultの要素数2個の時は、 out.print(result+","+",") ; //kannmaを2つ増やし要素数4に修正 } else if (result○○○) { {    //resultの要素数3個の時は、 out.print(result+",") ; // kannmaを1つ増やし要素数4に修正  }} else {       out.print(result) } } このような感じで考えていけばいいのでしょうか??

yairi1106
質問者

補足

>無理。split()では、どんな文字(文字列)を使って区切るのかを正規表現で表すだけです。 最初にsplit()で作業しようと思ったように 色々な条件で結合しなければいけないという事ですね。 例えば住所桁数maxを20桁としてフラッグをたてて 1 文字列内のスペース数をカウントし配列要素数を決定する 2 スペースをフィールドセパレートとして配列"住所"に入れる。 3 文字列の長さが桁を超えたら改行(分割)する 4 改行(分割)した文字列をカンマで区切る 5 最終的に80桁の文字列を4分割にする。 >あと、この例の場合は末尾の空白を削ると2分割で足りるわけですが、実行後のカンマは必ず3つ要るのですか? 仕様上要ります。 それはテキスト入出力後の条件になるのですが 実際テキストデータを印字する際 ソフトの都合上、住所1・住所2・住所3・住所4と設定して 4項目の印字位置に印字しますので データにより2分割にしてしまうと住所3の項目に別のデータが印字されてしまう もしくは設定エラーとなってしまうのです。 >本当ですか? 以前にも指摘したとおり20文字以下の文字列4つには分割できない入力例はいくらでも作れますから、そのような場合に対応するためのコードをわんさか足さないといけないと思います。 こちらに関しては、まだ例外を記載してないので 提示した以外で考えると嘘になってしまいます。 例えば、1つ例外としてわかっていることは お客様のテストデータではスペースが80桁すべての領域に 文字が埋まっているケースがありスペースなしでもちゃんと分割できるか試されます。 ですのでテスト合格するには別で条件に加える必要がございます。 その他では、今のとこなんパターンかのお客様テストデータを試しましたが 現状はsalsberryさんの構文で文字列は4つに分割されてます。 あとは教えていただいた正規表現" +$"で out.print(result1.replaceAll("[ +$]", ""));のようにしてスペースを スペースなしと置換することが出来たのですが 住所データが5分割のまま変わらないのは、まだ再構成が必要でしょうか??

  • racene
  • ベストアンサー率70% (21/30)
回答No.3

No.1 です。 正規表現が間違っているのではないでしょうか。 全角空白で分割するのであれば、正規表現は" "で大丈夫ですよ。 試しに手元で String str = new String("札幌市 北区 あああああ 0ハハ 00ハ 0ハ"); // 全角空白で分割 String[] strs = str.split(" "); // 連結 StringBuilder buf = new StringBuilder(); for(int i = 0; i < strs.length; i++) { if(i != 0) buf.append(','); buf.append(strs[i]); } // 結果を出力 System.out.println(buf.toString()); として実行したところ、 札幌市,北区,あああああ,0ハハ,00ハ,0ハ と出力されました。 ただし、20文字の制限については上のプログラムでは特に触れていないので、 もし必要なのであれば分割後の文字列の文字数をチェックしましょう。

yairi1106
質問者

補足

アドバイスどうもありがとうございます。 正規表現の知識が乏しいので、正規表現を考えれば 記載して頂いたコードでも 私がイメージしてる分割も出来ると思うのですが・・・ 色々条件がありましてなかなかすんなりとは いきません。

  • salsberry
  • ベストアンサー率69% (495/711)
回答No.2

1ヶ月以上経つのに、まだ同じことで悩んでいたんですね (QNo.7510971)。 > 正規表現でマッチさせた以降の文字 > 空白を含めた20文字のみ抜き取られて > それ以降は切り取られてます。 質問文に書いてあった正規表現を使ったのであれば当然の結果です。 str.split(正規表現)がどういう機能を持つか理解してから試してますか? もっとも、その正規表現を最初に示したのは僕なので責任の一端は感じます。 String str = "aaa bbbb ccccc dddddd eeeeeee ffffffff"; Pattern pattern2 = Pattern.compile("^.{1,20} "); String result = ""; while (str.length() > 20) { Matcher j = pattern2.matcher(str); if (j.find()) { String s = j.group(); int length = s.length(); result += s.substring(0, length-1) + ","; str = str.substring(length); } else { break; } } result += str; System.out.println(result);

yairi1106
質問者

補足

ご回答どうもありがとうございます。 ほとんど構文を記載していただき内容はまだ理解できてませんが 感謝してます。 >str.split(正規表現)がどういう機能を持つか理解してから試してますか? いいえ。理解してないまま試してました。 記載していただきました構文で試させていただいたところ 実行前→   立川市 上砂○ 0-00-0 ハハハハハハハハハ ハハハ 実行後→   立川市 上砂○ 0-00-0(14桁), ハハハハハハハハハ ハハハ(スペースを含めた20桁,(スペース20桁),(スペース20桁),(スペース2桁) と文字列はしっかり分割されてますが 文字列によっては5分割になる場合がございます。 あとスペースを詰めることが出来れば すべてが解決すると思われます。 今の私では考えてもすぐ解決できないと思います。 恐縮ですがアドバイスお願いいたします。

  • racene
  • ベストアンサー率70% (21/30)
回答No.1

正規表現で分割して、カンマ区切りに直したいということでよろしいでしょうか? もしそうであれば、 String str = new String(住所漢字); // 分割 String[] strs = str.split(正規表現); // 連結 StringBuilder buf = new StringBuilder(); for(int i = 0; i < strs.length; i++) { if(i != 0) buf.append(','); buf.append(strs[i]); } // 結果を出力 System.out.println(buf.toString()); でどうでしょうか。

yairi1106
質問者

補足

ご回答ありがとうございます。 >正規表現で分割して、カンマ区切りに直したい そうです。 raceneさんの認識で合っているかと思います。 そのままsplitでの構文を使用させて頂いた結果ですが 出力前 札幌市 北区 あああああ 0ハハ 00ハ 0ハ  出力後 ,0ハ と正規表現でマッチさせた以降の文字 空白を含めた20文字のみ抜き取られて それ以降は切り取られてます。

関連するQ&A

  • 文字列を分割するクラスについて

    住所のメソッドでの開発についてご質問がございます。 仕様 住所の配列は全角80(半角160)に格納される。 住所地名の途中で分割しないようにする。 80桁すべてに文字は格納されているときは20桁の4等分にする。 スペースで分割をおこなうようにする。 例1  実行前  札幌市 ○区 北○○○○○ 00-0-0-00      実行後  札幌市 ○区 北○○○○○,00-0-0-00,,      例1の場合20桁ずつ分割を考えると14桁目のスペースを利用してカンマ区切りで4つに分割 例2 実行後  あああああ いいいいい ううううう ええ     実行後  あああああ いいいいい ううううう ええ,,,     例2の場合文字がちょうど20桁なのでちょうどカンマ区切りで4等分  例3  実行前   あああああ いいいい ううううううううううう えええええ 0-00-000       実行後   あああああ いいいい,ううううううううううう えええええ,0-00-000,      例3の場合20文字だと区切りだと、うの領域の途中になるため      11桁目のスペースを利用して分割      そしてそこから20桁目を区切ろうとして次の区切りたい場所が      番地の途中になるため実行後のように、えで区切り4等分にカンマ区切り と基本的に住所分割をスペースを利用して住所の途中や番地の途中で 区切らないでカンマ区切りの4等分にするアルゴリズムを考えています。 private void 住所漢字(String 住所漢字, String 住所カナ, String 住民票住所漢字,PrintWriter out) { //(1)分割する文字列を生成 String str = new String(住所漢字); //(2)文字列をsplitメソッドで分割 String[] strAry = str.split(",", 0); { str = 住所漢字; } for (int i=0; i<strAry.length; i++) { } out.print(str.substring(0,20)+","+ str.substring(20,40) +","+ str.substring(40,60)+","+ str.substring(60,80)); }      現在は単純に全角80桁の配列に対して 20桁ずつの4等分に実行されるだけのプログラムになってます。 上記の例のような住所分割のアルゴリズムを開発する際 StringTokenizer st = new StringTokenizerのクラスは開発に有効でしょうか? また有効である場合のソース実行例の等のアドバイス、もしくは ほかに文字を分割するための便利なクラスがございましたら ご教授ください。 どうぞよろしくお願いいたします。

    • ベストアンサー
    • Java
  • 1文字以上のアルファベットが入力されているかチェックするには

    正規表現で1文字以上のアルファベットが含まれているかを確認する事はできますか? 1234567890 → × a123456789 → ○ 1234a56789 → ○ 123456789a → ○ a123b4567c → ○ import java.util.regex.*; Pattern pattern = Pattern.compile("?a-zA-Z{1,}?"); Matcher matcher = pattern.matcher("文字列"); if(matcher.matches()==false){   return "NG"; } アドバイス宜しくお願いします。

    • ベストアンサー
    • Java
  • Java正規表現-"ある文字列"を含まない文字列

    Javaの正規表現で、HTMLタグ以外の文字列を抽出しようとしています。 HTMLタグはの正規表現は"(</?.*>)"のように表しました。これの否定をしたいのですが、方法を教えて下さい。HTMLタグ以外にヒットさせたいです。 一応、現段階のソースを載せます。 import java.util.ArrayList; import java.util.regex.Matcher; import java.util.regex.Pattern; public class HTMLInnerGetter { public static void main(String[] args){ String regex = "(</?.*>)"; String target = "<html><head><title>title</title></head><body><h1>head1<br><p>pragraph</p></body></html>"; ArrayList<String> innerHTMLs = new ArrayList<String>(); Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(target); while(matcher.find()){ innerHTMLs.add(matcher.group(1)); } System.out.println(innerHTMLs); } } 出力結果 [<html><head><title>title</title></head><body><h1>head1<br><p>pragraph</p></body></html>] ※否定できなかったので、HTMLタグがヒットしています。

    • ベストアンサー
    • Java
  • 日本語の正規化表現

    urizakaです J2SDK1.4から正規表現が標準についたと知り、さっそくカタカナエラーチェックのためのBeanを作ってみたのですが、どんな文字列(カタカナ、英語、ひらがな…etc)と比較させても「False」しか戻ってこないという状態で、うまく行きません。 /** *カタカナエラーチェック:カタカナは使われているかどうか? *@param s 調べる **/ public boolean checkKkana(String s){ Pattern pattern = Pattern.compile("[^アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨワヲン]"); Matcher matcher = pattern.matcher(s); boolean check = matcher.matches(); return check; } } もしかすると、日本語を処理するのには特別な方法が必要なのでしょうか? すみませんが、よろしくお願いします

    • ベストアンサー
    • Java
  • 正規表現の空白文字について

    Javaで正規表現を使って文字列のマッチング処理を勉強しています。 パラメータで渡されてきた値に"name="と入っている場合、マッチOKに したいのですが、 "name" と "="の間には、全角、半角スペースが複数混在している可能性があり、 その場合もマッチOKにしたいです。 アドバイスをお願いします。 ・マッチOKにしたい文字列  name=  name =  name =  name  =  name   =  など。 name" と "="の間には、全角、半角スペースが複数存在している可能性あり。 スペースなし(name=)の場合もマッチOKにしたい。 以下のようにすると全角のみ、半角のみのスペースなら1文字以上入っていても マッチOK(スペースなし(name=)の場合もマッチOK)ですが、 全角と半角のスペースが混在してしまうとマッチOKになりません。 String param = "name=mike"; Pattern p = Pattern.compile("name( *?|\\s?)=", Pattern.CASE_INSENSITIVE); Matcher m = p.matcher(param);

    • ベストアンサー
    • Java
  • 秀丸エディタの正規表現

    秀丸エディタの正規表現 これから述べる置換処理について教えてください。 条件を表現します。 まず半角空白文字を _ このように全角アンダースコアであらわします。 そしてマッチさせたいSTRINGは _ このように半角空白文字がそれ以外の文字に前後をはさまれている状態ではなくて、 、 __ このように半角空白文字二個もしくは二個以上続いたものが半角空白文字以外に挟まれているパターンです。 。 ちなみに置換後の文字列は __ ですつまり空白半角文字列二個です。 よってこの質問は次のようにも言い換えられます。 。 検索文字列 半角空白文字二個以上 を置換後文字列 半角空白文字二個に置き換える。もしくは、半角空白文字三個以上を 置換後文字列 半角空白文字二個に置き換える。 というのが質問です。おねがいします。 すみませんつけたしです。上記を実現する正規表現を教えてください。

  • SubStringの使い方について

    AnsiString memo3; というところに文字列"0X0X0X0X"というのが入っています。 この8文字を1文字つづ読み取り、文字コードによって分岐するコードを作成して1バイトの数値データを作りたいと考えています。 その際に   String area_chk = memo3.SubString(j+1,1); strcpy((char *)code,(char *)area_chk.c_str()); memo3の1文字をSubString(j+1,1)で取ってバイトデータをcodeに入れました。 その時に BYTE code; で宣言していると、ビルドは通るのですが、デバッグで strcpy((char *)code,(char *)area_chk.c_str()); この分を通過する際にエラーがでて 止まってしまいます。 現在 BYTE code[2]; これを宣言しておくと問題はないのですが、いちいち2バイト宣言しないと いけないのでしょうか? 解決法などご教授いただきますよう、お願い致します。 現在下のコードのようにして動作させています。 for(int j=0;j<8;j++) { if(i == 0) { break; } code[0] = 0x00; code[1] = 0x00; String area_chk = memo3.SubString(j+1,1); strcpy((char *)code,(char *)area_chk.c_str()); //result_num = result_num < 1; switch(code[0]) { case 0x58: //X result_num = (result_num & 0x7f); break; case 0x4f: //0 result_num = result_num + 0x80; break;   default: break; } if(j != 7) { result_num = result_num >> 1; } } } どうぞ、よろしくお願い致します。

  • 初めて投稿します。

    初めて投稿します。 JavaでHTMLソースコードからリンクタグ<a href="~~"></a>と文字列(テキスト)だけ取得したいのです(<a href="~~">から</a>タグの文字列を含む)。 Pattern pattern = Pattern.compile("<.+?>", Pattern.DOTALL); Matcher matcher = pattern.matcher(<ソースコード>); とするとタグ全てが除去されてしまうので困っています。 Pattern.compileの引数に入れる正規表現を教えてください。 よろしくお願いいたします。

  • 正規表現の検索について

    正規表現のエスケープしなければいけない文字が文字列に含まれているかどうかをチェックしたいのですがうまくいきません。 今は、下記のようにしてnoと表示されます。 よろしくお願いします。 String str ="(1)test"; Pattern p; Matcher m; p = Pattern.compile("\\(1\\)"); m = p.matcher(str); if(m.matches()) { System.out.println("ok"); }else{ System.out.println("no"); }

    • ベストアンサー
    • Java
  • URL\正規表現@java

    perlメモさん?にPerlでのURLの正規表現はあるのですが Javaで使いたいと思います。 Pattern pattern = Pattern.compile("正規表現"); Matcher matcher = pattern.matcher(String); のステートメントを使う方法をご存知な方おられませんか? Perlメモさん?の正規表現をエディタにコピペしても 不正なエスケープエラー?がでてだめでした。 (http Urlのごちゃごちゃした奴の下から二番目) (「\b(?:」で始まる奴です) なのでエディタに貼り付けて\を\\に置き換えたものを 正規表現の部分にしたところコンパイルはとおりましたが、 正確にマッチしてくれませんでした。 よろしくお願いします。

    • ベストアンサー
    • Java