如何使用正则表达式或其他技术解析字符串?

时间:2016-12-10 02:16:20

标签: php regex

我需要解析以下字符串中的id:

 https://itunes.apple.com/us/album/24k-magic/id1161503945?i=1161504024&uo=2

我只需要返回以下内容:

id1161503945

字符串始终以https://itunes.apple.com/开头,以?i = #####& uo = 2

结尾

我尝试过字符串并用通配符替换,但这不起作用。

2 个答案:

答案 0 :(得分:1)

如果它确实始终是url中的最后一个元素(在查询参数之前),那么你可以使用这个简单的正则表达式:

'/id[^?]+/'

注意:正如@xhienne所指出的,如果您确定在搜索到的部分之前的任何地方没有出现另一个id字符串,那么它只能 。 如果可能发生,请使用:

'/id[\d]+/'

这样,相对于之前的id字符串,它是安全的,但搜索到的id必须后跟数字。

答案 1 :(得分:1)

好吧,你可以使用下面的正则表达式。这是工作。我使用了preg_replace函数。

    IEnumerable<string> Names = GetData(CardNumber, Section).Select(s => s.FullName);
    IEnumerable<string> OrderedList = driver.FindElements(By.XPath("//li[@ng-repeat='Names']")).Select(i => i.Text);

输出

id1161503945

或者您可以使用

$data = 'https://itunes.apple.com/us/album/24k-magic/id1161503945?i=1161504024&uo=2';
echo preg_replace("/(.*)\/(\w+)\?(.*)/","$2",$data);

相同的输出。

希望对你有帮助