我需要正则表达式的帮助。 这是文字,我有:
#1234 10% commet@timing:information and other activity2@timing
#12d34 10% commet@timing:information and other activity2@timing
#3132 10% testing@1.10:test commit frontend@44min:other comments
#3132 10% testing@1.10:test commit 2
因此,我需要获取每个 text @ text:带空格的文本和 text @ text with spaces 条目。
这就是我现在所拥有的:https://regex101.com/r/zgILCE/1
我的正则表达式/(\w*)\@([\w.]*)\:((\w|\s)*) /
效果不佳。
UPD。 我需要正则表达式匹配这个: 一个@ one:一些文字 一一 一个@之一:一个
图例:
一个字(可能有数字)
一些文本 - 常规文本(可能带有数字)
答案 0 :(得分:2)
我会使用以下RegEx:
\s+\S+\@\S+(\s+|$)
上面的RegEx匹配空格,然后是任何非空格字符后跟@符号,然后是任何非空格字符,后跟空格。这使它匹配:通过下一个空格。
如果文件中的最后一项在文件末尾没有行尾,那么最后的$将使它仍然匹配。否则,使用全局匹配修饰符,\ s无论如何都将匹配垂直白色空间(也就是行结束)
如果每个评论你真的只想匹配一个空白区域,而文档中没有多少:
\s\S+\@\S+(\s|$)
答案 1 :(得分:2)
我认为你在寻找:
(?<!\S)(\w+)@([\w.]*:)?(\w+(?:\h\w+)*)(?!\S)
细节:
(?<!\S) # not preceded by a character that isn't a whitespace
(\w+)
@
([\w.]*:)? # according to your requirements this part is optional
(
\w+ (?:\h\w+)* # way to include eventual single spaces between words
)
(?!\S) # not followed by a character that isn't a whitespace
答案 2 :(得分:0)
<?php
$string1='#3132 10% testing@1.10:test commit frontend@44min:other comments ';
$string=explode(' ',$string1);
echo '<pre>';
$myArray=array();
foreach ($string as $row){
if (strpos($row, '@') !== false) {
$myArray[]=$row;
}
}
print_r($myArray);
我将提供一个更多的PHP解决方案,而不是一个正则表达式。我正在爆炸你的字符串以获得一个数组,我用循环搜索数组字段以找到@
。在我这样做之后,我就回到了这个领域。
输出结果为:
Array
(
[0] => testing@1.10:test
[1] => frontend@44min:other
)