什么是匹配前一个冒号和之前的第一个空格之间的所有内容的正则表达式?

时间:2014-04-17 11:27:16

标签: .net regex

我正在寻找一个正则表达式,它收集最后一个冒号(:)和它之前的第一个空格之间的所有内容。因此,如果我有句"HUHweg: 4ihfw:euigr yalalala:",我想收集"yalalala"

我想出了" (?<content>)/[^:]*$",但内容组是空的。我希望内容后跟内容直到最后:结尾($)可以正常工作,但事实并非如此。如何才能工作?

2 个答案:

答案 0 :(得分:3)

你还没到目前为止......尝试使用(这里我使用~作为正则表达式分隔符)

~ (?<content>[^ :]*):\s*$~

捕获组必须有一些东西可以捕获。此外,您需要禁止内容中的空格,或者您可能在所需的部分之前捕获一些单词。

\s,所有类型的空格(空格,制表符,换行符......)的快捷方式将捕获最后一列之后有尾随空格的情况。

请参阅demo

答案 1 :(得分:0)

PHP代码(我认为它可以很容易地转换成其他语言)

<?php
$patterns=array('/(.|\s)*(\s)((.[^:])*)(\:)(?=[^\:]*)/');
$replacements=array(' $3 ');
$string='HUHweg: 4ihfw:euigr yalalala: ';

echo preg_replace($patterns,$replacements,$string);
?>

Result: yalalala

首先是任何数量的炭或白炭。然后恰好是一个空白区域。然后我们的字符串被捕获为$3。接下来是冒号,然后是匹配任何char而不是冒号的语句:)