0

我需要选择字符串的一小部分。

这是一个示例字符串:http://itunes.apple.com/app/eyelashes/id564783832?uo=5

我需要:564783832

要记住几件事:

  • 该数字将始终以id(即。id564783832
  • 后面可能有也可能没有?uo=5(也可能是其他参数uo
  • 我需要的字符串可以是不同的长度(不会总是 9 位)
  • 前面的文本id将具有相似的格式(斜线 # 相同,但文本会不同)

这最终将通过 Ruby 实现。

4

4 回答 4

2

在不了解您的语言/工具的情况下,假设支持向后看。

'(?<=id)\d+'
于 2013-05-10T16:35:19.097 回答
0

awk

awk '{print $2}' FS='(id|?)'
于 2013-05-10T16:34:49.163 回答
0

您可以匹配一些以“id”开头的数字序列 - 这假设这些是唯一以“id”开头的数字序列:

(?<=id)\d++

Java中的一个测试用例:

public static void main(String[] args) {
    String input = "http://itunes.apple.com/app/eyelashes/id564783832?uo=5";
    Pattern pattern = Pattern.compile("(?<=id)\\d++");
    Matcher matcher = pattern.matcher(input);
    while (matcher.find()) {
        System.out.println(matcher.group());
    }
}

输出

564783832
于 2013-05-10T16:36:00.650 回答
0

这是我的:

[\w\/]+id(\d+)(\?|$)
于 2013-05-10T16:37:53.980 回答