0

我正在寻找一种使用正则表达式查找和替换句子的方法。正则表达式应该能够找到任何长度的句子。我可以用 .* 得到整个句子,但这不允许它用 \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>
4

5 回答 5

2

您需要使用捕获组。这样您就可以通过反向引用来引用捕获的组。

正则表达式:

.*(?<= \")([^"]*).*

替换字符串:

<key>\1</key> 

演示

于 2014-07-23T09:45:13.417 回答
0

使用以下表达式查找(需要修饰符:gm):

^[^=]+= "(.*?)"$

然后使用以下方法替换它们:

<key>$1</key>

或者

<key>\1</key>
于 2014-07-23T09:42:37.587 回答
0

Perl 单行

一种紧凑的方法:搜索(?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
于 2014-07-23T09:59:27.143 回答
0

使用 perl:

> 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>
> 
于 2014-07-23T09:56:58.377 回答
0

对于那些来自谷歌搜索的人,你可以在这里使用这个很棒的工具来找到正确的regex表达方式: http ://regexr.com/

于 2015-05-26T08:47:21.690 回答