入力文字列で特定の文字列パターンを検索したい。
例えば.
String URL = "https://localhost:8080/sbs/01.00/sip/dreamworks/v/01.00/cui/print/$fwVer/{$fwVer}/$lang/en/$model/{$model}/$region/us/$imageBg/{$imageBg}/$imageH/{$imageH}/$imageSz/{$imageSz}/$imageW/{$imageW}/movie/Kung_Fu_Panda_two/categories/3D_Pix/item/{item}/_back/2?$uniqueID={$uniqueID}"
次に、文字列URLに「/{item}/
"。 私を助けてください。
これは一例です。実際に必要なのは、URLに「/ {a-zA-Z0-9} /」に一致する文字列が含まれているかどうかを確認することです
これにはPattern
クラスを使用できます。 {}
内のWord文字のみを照合する場合は、次の正規表現を使用できます。 \w
は[a-zA-Z0-9_]
の短縮形です。 _
で問題ない場合は、\w
を使用するか、[a-zA-Z0-9]
を使用します。
String URL = "https://localhost:8080/sbs/01.00/sip/dreamworks/v/01.00/cui/print/$fwVer/{$fwVer}/$lang/en/$model/{$model}/$region/us/$imageBg/{$imageBg}/$imageH/{$imageH}/$imageSz/{$imageSz}/$imageW/{$imageW}/movie/Kung_Fu_Panda_two/categories/3D_Pix/item/{item}/_back/2?$uniqueID={$uniqueID}";
Pattern pattern = Pattern.compile("/\\{\\w+\\}/");
Matcher matcher = pattern.matcher(URL);
if (matcher.find()) {
System.out.println(matcher.group(0)); //prints /{item}/
} else {
System.out.println("Match not found");
}
それはただの問題です String.contains
:
if (input.contains("{item}"))
発生するwhereを知る必要がある場合は、indexOf
を使用できます。
int index = input.indexOf("{item}");
if (index != -1) // -1 means "not found"
{
...
}
exact文字列のマッチングには問題ありません-実際のpatternsが必要な場合(例えば「3桁の数字の後に最大で2文字のAC」)) 正規表現 を調べる必要があります。
編集:さて、あなたは正規表現を望んでいるようですdo次のようなものが必要な場合があります。
private static final Pattern URL_PATTERN =
Pattern.compile("/\\{[a-zA-Z0-9]+\\}/");
...
if (URL_PATTERN.matches(input).find())
文字列が別の文字列に存在するかどうかを確認する場合は、_String.contains
_のようなものを使用します
あなたがいくつかを確認したい場合 パターン 文字列に存在する場合、パターンに「。*」を追加して追加します。結果は、パターンを含む文字列を受け入れます。
例:正規表現があるとします a(b|c) 文字列がab
またはac
に一致するかどうかをチェックします.*(a(b|c)).*
は、文字列にab
またはac
が含まれているかどうかを確認します。
この方法の欠点は、対戦の場所がわからないことです。
string.indexOf("{item}")
を使用して実行できます。結果が-1より大きい場合{item}
は文字列にあります