Regex 用正则表达式进行Perl字符串解析

Regex 用正则表达式进行Perl字符串解析,regex,perl,Regex,Perl,我有一个格式为501h-1-c2950-0a1的字符串布拉赫布拉赫501h-1-c2950-01.yahoo.com 501h-1-c2950-01.blog.com%%501h-1-c2950-0a1布拉赫布拉赫501h-1-c2950-01 501h-1-c2950-01 从这里,我想分别提取501h-1-c2950-01501H-1-c2950-01.yahoo.com部分 这意味着如果字母数字单词后跟“-”,我将提取它们。如果后面还有[DOT][anything][DOT][anythi

我有一个格式为501h-1-c2950-0a1的字符串布拉赫布拉赫501h-1-c2950-01.yahoo.com 501h-1-c2950-01.blog.com%%501h-1-c2950-0a1布拉赫布拉赫501h-1-c2950-01 501h-1-c2950-01

从这里,我想分别提取501h-1-c2950-01501H-1-c2950-01.yahoo.com部分

这意味着如果字母数字单词后跟“-”,我将提取它们。如果后面还有[DOT][anything][DOT][anything],我将提取它们

因此,我的最终输出将具有

501h-1-c2950-0A1501H-1-c2950-01.yahoo.com,501h-1-c2950-01.blog.com,501h-1-c2950-0A1501H-1-c2950-01501H-1-c2950-01

我尝试了很多正则表达式,但都失败了。有什么帮助吗?

试试这个,其中$s是您的输入字符串:

my @arr = $s =~ /([a-zA-Z0-9.-]+-[a-zA-Z0-9.-]+)/g;

这里,正则表达式正在检查一个强制连字符-位于字母数字、点、连字符序列之间。

什么正则表达式最接近您的目标?我现在忽略了[dot][任何]部分。为此,我使用了/[\d\w]+\-[\d\w]+*[\s]+/g,但没有很好的输出。请向我们展示您尝试过的内容,然后解释为什么它不适合您的需要。它是否丢失了一些数据?是不是太多了?别让我们猜。一个问题是它也接受任何格式的东西-----------。如何修复?只需添加-+\在你的正则表达式的开头!