こんにちは私は正規表現で2つのタスクの助けが必要です私は初心者であり、さまざまなチュートリアルを見ましたが、答えを見つけることができません。
カンマに続く単語をどのように繰り返しますか?
たとえば、出現するたびに置換を見つけて、それに続く単語に置換したいとします。
例:猫と犬->猫と犬
「i」または「t」で始まる単語を、Iという単語を除いてどのように置き換えますか
たとえば、これを置き換えたい->(新しい単語)を(新しい単語)に置き換えたい
に置き換え, ((\w)+)
ます, \1 \1
。
\w
単語の文字を意味します (通常は[A-Za-z0-9_]
)
(\w)+
1 つ以上の単語文字を意味します
\1
は、最初の式 ((\w)+
この場合) の括弧内に最初に現れるものを意味し、これは 2 回繰り返されます。\1 \1
に置き換え(\s|^)((i|I)\w+|(t|T))
ます\1NEWWORD
。
(a|b)
またはa
_b
^
行の開始を示します
\s
空白を意味します
つまり(\s|^)
、空白または行頭
(i|I)
小文字または大文字を意味しますi
(i|I)\w+
i
文字の後に 1 つ以上の文字が続くことを意味します
(t|T)
小文字または大文字を意味しますt
((i|I)\w+|(t|T))
i
文字の後に 1 つ以上の文字または文字が続くことを意味します。t
NEWWORD
置き換えたい単語です
最初の正規表現は次のとおりです。
,\s*(\w+)
また、言語に応じて、$1 または \1 の後方参照を使用します。
2 番目の正規表現は次のとおりです。
[iITt]\w+
また、後方参照は必要ありません。
試す:
preg_replace("/,\s*([^\s]++)/", ", $1 $1", $string);
これは、グループ化および後方参照と呼ばれます。$1 の代わりに \\1 を使用することもできます。
より包括的なガイド: http://www.regular-expressions.info/brackets.html
これは Autoit コードです。理解するのに役立つかもしれません
$var = 'This is the test, HelloWorld yeah!'
ConsoleWrite(StringRegExpReplace($var, ',(\s*[a-zA-Z]+)', '$1$1') & @CRLF)