我正在尝试以特定格式读取字符串
<ahref="/teams/spain/real-sociedad-de-futbol/2028/">RealSociedad</a>
这是字符串的一个示例,我想要提取的是团队的名称。
我尝试过这样的事情,
houseteam = sscanf(str, '<ahref="%*s">%s</a>');
但它不起作用,为什么?
答案 0 :(得分:1)
您可以像上面的帖子一样使用regexprep
为您执行此操作。即使您的帖子说要使用sscanf
以及帖子中的评论,您也希望使用regexprep
完成此操作。您必须使用两个嵌套的regexprep
调用来执行此操作,并且您可以检索团队名称(即RealSociedad
),因为str
采用您提供的格式:
str = '<ahref="/teams/spain/real-sociedad-de-futbol/2028/">RealSociedad</a>';
houseteam = regexprep(regexprep(str, '^<a(.*)">', ''), '</a>$', '')
这看起来非常令人生畏,但让我们解决这个问题。首先,看看这个陈述:
regexprep(str, '^<a(.*)">', '')
regexprep
的工作原理是指定要分析的字符串,要搜索的模式,以及要替换此模式的内容。我们正在寻找的模式是:
^<a(.*)">
这表示您正在寻找字符串开头以a<
开头的模式。在此之后,(.*)">
正在执行贪心评估。这就是说我们要找到最长字符序列,直到我们找到">
的字符。因此,正则表达式将匹配的是以下字符串:
<ahref="/teams/spain/real-sociedad-de-futbol/2028/">
然后我们用空字符串替换它。因此,第一个regexprep
调用的输出将是:
RealSociedad</a>
我们希望摆脱</a>
字符串,因此我们会在字符串末尾查找regexprep
进行另一次</a>
调用,然后将其替换为空白的字符串又来了。因此,您正在寻找的模式是:
</a>$
美元符号($)
表示此模式应在字符串的末尾显示为。如果我们找到这样的模式,我们将用空字符串替换它。因此,我们最终得到的是:
RealSociedad
答案 1 :(得分:0)
找到解决方案。因此,%s
在找到空格时会停止。
str = regexprep(str, '<', ' <');
str = regexprep(str, '>', '> ');
houseteam = sscanf(str, '%*s %s %*s');
这将在我想要的字符串之间创建一个空格。