作るために(?i)
を使用することができます:
/[a-zA-Z]+/g
これは正規表現を定義するための言語固有の構文であり、g
は「グローバル」を意味します。つまり、必要な回数だけ繰り返します。
Javaでは、正規表現は文字列リテラルとして与えられます。特別な正規表現構文はありません。
g
オプション
は使用されませんが、あなたは右の方法を選択することで、同じ動作を得る:
replaceFirst()
は一度だけの意味、および[
replaceAll()][1]
は
g
(グローバル)オプションを指定するのと同じです。
したがって、replaceAll("/[a-zA-Z]+/g", "_")
はreplaceAll("[a-zA-Z]+", "_")
である必要があります。
g
がいない場合は、replaceFirst("[a-zA-Z]+", "_")
を使用していました。
ただし、はを "アンダースコアにすべての文字(下限と大文字)を変更" と述べました。 「単一文字(アンダースコア)」のすべての文字か、「アンダースコアの文字」を意味しましたか?
後者の場合、これらのいずれかを使用:
replaceAll("[a-zA-Z]", "_")
replaceAll("(?i)[a-z]", "_") // Flag: CASE_INSENSITIVE
replaceAll("\\p{Alpha}", "_") // POSIX: An alphabetic character [\p{Lower}\p{Upper}]
// For non-english letter support:
replaceAll("(?U)\\p{Alpha}", "_") // Flag: UNICODE_CHARACTER_CLASS
replaceAll("\\p{L}", "_") // Unicode letter category
スタート正規表現から先頭と末尾の '/'と 'G'を除去することによって。彼らはそこに属しません。これらは、引用やオプションの指定の代わりに他の言語で使用されます。 – Andreas
ええ、それらはPerl/vimです。 Javaはその構文を使用しません。 – markspace
あなたがハングマンゲームを開発しようとしている場合、より良い方法は、単純な 'char'配列を使用して' _answer'を呼び出すときです。 配列のルックアップは、正規表現よりもはるかに高速でエラーの発生が少なくなります。 さらに、文字が推測されると、正規表現の管理が面倒になることがわかります。 – Nosh