正規表現を使用して文を見つけて置き換える方法を探しています。正規表現は、任意の長さの文を見つけることができるはずです。文全体を .* で取得できますが、\1 で置き換えることはできません。
FIND:
"QUESTION1" = "What is the day satellite called?"
"ANSWER1" = "The sun"
REPLACE:
<key>What is the day satellite called?</key>
<key>The sun</key>
キャプチャ グループを使用する必要があります。後方参照を通じてキャプチャされたグループを参照できるようにします。
正規表現:
.*(?<= \")([^"]*).*
置換文字列:
<key>\1</key>
コンパクトなアプローチ:検索(?m)"([^"]+)"$
必要に応じて置き換え<key>$1</key>
ます<key>What is the day satellite called?</key>
また
置換:"<key>$1</key>"
必要に応じて"<key>What is the day satellite called?</key>"
perlワンライナーで:
perl -pe 's!(?m)"([^"]+)"$!<key>$1</key>!g' yourfile
パールを使用:
> cat temp
"QUESTION1" = "What is the day satellite called?"
"ANSWER1" = "The sun"
> perl -lne 'print "<key>".$1."<\/key>" if(/\".*?\".*?\"(.*?)\"/)' temp
<key>What is the day satellite called?</key>
<key>The sun</key>
>
次の式を使用して検索します (修飾子が必要です:g
およびm
):
^[^=]+= "(.*?)"$
次に、次を使用してそれらを置き換えます。
<key>$1</key>
また
<key>\1</key>
regex
Google 検索から来ている人は、ここでこの素晴らしいツールを試して、使用する適切な表現を 見つけることができます: http://regexr.com/