
No.2ベストアンサー
- 回答日時:
ちょっとしたサンプルを作ってみました
----------------------------------------------------------------
import java.util.regex.*;
class MatchUpper {
public static void main(String args[]) {
StringBuffer a = new StringBuffer("<a href=\"http://www.yahoo.co.jp/\">Yahoo! JAPAN</a>");
Pattern pat = Pattern.compile(">.*?<",Pattern.CASE_INSENSITIVE);
Matcher m = pat.matcher(a);
if(m.find()){
String b = a.substring(m.start(),m.end());
System.out.println(b);//マッチした部分
a.replace(m.start(),m.end(),b.toUpperCase());
System.out.println(a);//マッチした部分を大文字にした
}
}
}
御回答ありがとうございます。
その手があることをすっかり失念していました。substringで取り出してtoUpperで変換したものをreplaceしてやればいいんですよね。
何やら随分と簡単なことで悩んでいたような気がします。どうもありがとうございました。
No.3
- 回答日時:
<br /> 正規表現に関してはその機能が豊富なのでoroをよく使います。<br /> <br /> Perl5Util (
v-1 API)http://jakarta.apache.org/oro/api/org/apache/oro …
質問者さんの要望は、察するに以下のようなことをしたいのではないかと思います。どうでしょう?
(変換結果1)qawsedrftgy HUJIKO lp;
(変換結果2)qawsedrftgyhuji1kolp;
package com.mady.test.RegTest;
import org.apache.oro.text.perl.Perl5Util;
/**
* 前方参照の記号が SUNのJavadocでは
*
* @author miura
*/
public class 大文字置換 {
/**
* メインメソッド
*
* @param args
* 外部入力引数
*/
public static void main(String[] args) {
// hujiの4文字で始まって2文字のアルファベットが続く文字列を
// 大文字に置換する。
// ついでに分かりやすくするためにその前後に空白を入れる
String pattarn = "s/(huji[a-zA-Z]{2})/ \\U$1 /g";
String input = "qawsedrftgyhujikolp;";
Perl5Util perl5Util = new Perl5Util();
String result = perl5Util.substitute(pattarn, input);
System.out.println(result);
// hujiの後に数字が入っているので対象にはならない
input = "qawsedrftgyhuji1kolp;";
result = perl5Util.substitute(pattarn, input);
System.out.println(result);
}
}
御回答ありがとうございます。
このパッケージの存在は知りませんでした。かなり使いでがありそうですね。さっそくドキュメントを読んでみます。
どうもありがとうございました。
No.1
- 回答日時:
単純に考えるとtoUpperCaseを使おうと思う気がします。
まずはあなたがどのように「replaceAllやtoUpperCaseを組み合わせて試行錯誤した」のかを示し、どのようにうまくいかなかったのかを明確にした方がよいのではないでしょうか。
確かに、御回答のように真っ先に考えたのはtoUpperCaseなのですが、単純に使ったのでは全文が大文字になってしまいます。
そこで、replaceAllで何とかならないかと考えたのですが、この場合は変換後の文字列を一意に指定しなければなりません。
ならばと、substringで条件に合致する部分を抜き出し、手作業でロジックを組んで置換する方法を考えましたが、該当する部分文字列が不定長であるために、正規表現にマッチしたとして何文字切り出せばいいかわからないという問題に突き当たってしまいました。
最終手段としては文字列全てを一文字ずつ条件判定しながら解析する方法も考えたのですが、対象として想定しているのが数百kB以上のファイル丸ごと一つなどですので、あまりうまくないような気がします。
何とか、標準関数の組み合わせでうまい方法はないかと考え、相談させて頂きました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) テキストエディタで複数行にわたる文字列の行頭に番号を振る方法 4 2023/03/11 12:57
- フリーソフト サクラエディタの正規表現(grep機能)の使い方 3 2022/06/22 10:29
- Excel(エクセル) Excelで校閲をする方法はあるでしょうか(取扱説明書への掲載禁止用語の確認) 3 2022/06/11 22:51
- その他(コンピューター・テクノロジー) 正規表現の置換で一部の文字列をそのまま残したい 2 2022/05/03 19:19
- その他(プログラミング・Web制作) VB.NETの正規表現について 4 2022/04/12 16:54
- オープンソース csvデータのダブルクォーテーションで囲まれた文字内にあるカンマを削除したい 3 2022/09/02 15:17
- Excel(エクセル) エクセル関数の変わった使い方 3 2022/05/13 17:12
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- Excel(エクセル) エクセルの数式で教えてください。 2 2023/02/10 11:41
- JavaScript javascriptで文字挿入でtoggleみたいなのはありますか? 2 2023/02/14 21:53
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Googleログインボタンのデザイ...
-
JDONWROADER2のエラー修復
-
jdbcでinsert,delete,createをe...
-
配列にnullを代入すると、null...
-
プログラミングの問題です。大...
-
eclipse実行ができない
-
論理回路設計をVerilogで行う問...
-
CSV出力を画面から選択したデー...
-
ショートカットキーについて
-
Processingでマウスクリックで...
-
「main メソッドを持つクラスが...
-
スプレッドシートからリマイン...
-
googleスプレッドシートのスク...
-
googleスプレッドシートのGASに...
-
Verilogについて質問です。この...
-
ゲーム開発の入門書を探しています
-
session,requestはjspで未定義...
-
サーブレットをapacheで公開す...
-
下記のリストならno002が含まれ...
-
is this even a thing?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
配列にnullを代入すると、null...
-
マイクラでPythonのプログラミ...
-
正規表現について質問です。 カ...
-
プログラミングの問題です。大...
-
「main メソッドを持つクラスが...
-
Eclipse 動的プロジェクトで404...
-
jdbcでinsert,delete,createをe...
-
jdk17.06のインストーラーが起...
-
eclipseで作ったプログラムを他...
-
googleスプレッドシートのGASに...
-
直し方について教えて頂きたい...
-
自作Androidアプリのデータ引き...
-
JaneStyleのスレッドが見れなく...
-
プログラムの単体テストで金額...
-
下記のリストならno002が含まれ...
-
複数TBLのオブジェクトを1つの...
-
問題作成のWebアプリの作り方を...
-
CSV出力を画面から選択したデー...
-
デバッグツールの具体例を教え...
-
EclipseとVisual StudioをPC1台...
おすすめ情報