0

コード:

https://aaa.bbb.net/ccc/211099_589944494365122_1446403980_n.jpg

589944494365122正規表現を使用してその文字列から抜け出すにはどうすればよいですか?

私がこれまでにできる最善のことは_(.*)結果です589944494365122_1446403980_n.jpg

4

4 に答える 4

2

まず、問題の説明を次のように一般化する必要があります。文字列の最初の文字列の後に、空でない最長の数字の部分文字列を取得するにはどうすればよい_ですか。あなたが文字通り求めた正規表現はですが(589944494365122)、それはあなたが期待するものではありません。

あなたが欲しいものについての私の推測によると、答えはである可能性があります_(\d+)

于 2013-01-16T21:07:27.693 に答える
1

これは機能します。

var s = "https://aaa.bbb.net/ccc/211099_589944494365122_1446403980_n.jpg";
var m = /_([^_]*)/.exec(s);
console.log( m[1] ); // 589944494365122
于 2013-01-17T01:19:17.747 に答える
1

\d+_(\d+)_\d+_n\.jpg使用しますが、URL の正確な仕様によっては、少し調整が必要になる場合があります。

また、言語によっては、これを少し変更する必要がある場合があります。私が提案するソリューションは、たとえば Ruby (および他の多くの正規表現の実装) で機能します。ここ\dでは任意の数字に一致し、\d+1 つ以上の数字を意味します。前の文字.jpgは常にあると思いますが、これを(任意の文字) または(任意の単語文字)nに置き換えることで変更できます。n.\w

于 2013-01-16T21:05:37.010 に答える
1

あなたの入力で見ることができる抽出のルールは次のとおりです。

211099_589944494365122_1446403980
[0-9]+_ part we want  _[0-9]+

そのため、後読みと先読みを使用した正規表現が役立ちます。

'(?<=\d_)\d+(?=_\d)'

grep でテストします。

kent$  echo " https://aaa.bbb.net/ccc/211099_589944494365122_1446403980_n.jpg"|grep -Po '(?<=\d_)\d+(?=_\d)'
589944494365122
于 2013-01-17T00:58:07.020 に答える