我有多行这样的行(包含多个随机数):
value:"200 text.text.text.text
value:"235437 text.text.11.text
value:"12835 text.text.17.text
value:"347783 text.text.text.text
我想删除空格前的所有内容 text.text.text.text
看起来像这样(我也想删除空格):
text.text.text.text
text.text.11.text
text.text.17.text
text.text.text.text
答案1
对于你的情况,有几个简单的解决方案。第一个解决方案仅使用基本正则表达式:
[\.\w]+$
这会捕获从末尾开始的每个单词字符\w
或句点,当遇到任何其他类型的字符时停止。这是有效的,因为空格不是单词字符或句点。\.
$
如果您想选择需要删除的区域,您只需使用:
.*
将其理解为匹配每个字符,.*
直到最后一个空格。之所以匹配直到最后的空间,是因为恒星是贪婪的量词。这意味着它会匹配所有可以匹配的内容,然后开始根据需要返回字符,以便匹配其余的模式。要匹配到第一个空格,请使用
.*?
。星号旁边的问号使星号懒惰的。这意味着星号将匹配尽可能少的字符,以便表达式的下一部分能够找到匹配项。
但是,捕获组非常适合解决此类问题,即您希望删除行的一部分并保留其余部分。一个简单的公式是:
^(.*)pattern_to_remove(.*)$
然后你可以使用反向引用。这些存储捕获组(括号内的任何内容)从正则表达式转换为预设变量。在上述模式中,这将是\1\2
或$1$2
取决于您使用的语言。这让我想到了可能对你的问题最简单的答案:
(.*)
第一个捕获组包含空格后的所有内容。这个正则表达式非常简单易读。移至第一个空格,然后捕获其后的所有内容
(.*)
。