2

我有一千个 Delphi 文件 (.pas),我需要从中提取文本。

我需要的文本在单引号(Pascal 字符串)之间,我只需要从特定函数调用的字符串。例如:my_function('这是我需要的字符串')

我使用 find 和 grep 提取了出现该函数的所有行并添加到文本文件中,但我无法提取字符串。

我一直在互联网上寻找一个正则表达式来提取这个字符串,但我不知道该怎么做。我正在尝试这个:

sed "s/.*my_function\('(.*)'\).*/\1/" all_the_strings.txt > my_out_file.txt

但它不起作用(我不是正则表达式的专家......)。

你能帮我解决这个问题吗?

4

3 回答 3

3

这可能对您有用(GNU sed):

sed -nr "s/.*my_function\('([^']*)'\).*/\1/p" all_the_strings.txt > my_out_file.txt
于 2013-06-25T09:03:21.450 回答
1

你可以试试这个:

sed 's/.*my_function(.\(.*\).).*/\1/;'
于 2013-06-25T07:53:28.117 回答
0

您的解决方案不会在正确的位置转义括号。在中,它们不是特殊的元字符,因此它们匹配文字。

您必须转义它们才能进行分组,因此更改正则表达式以转义内部表达式,例如:

sed "s/.*my_function('\(.*\)').*/\1/" all_the_strings.txt > my_out_file.txt
于 2013-06-25T08:11:17.137 回答