我想从下面的文本中获取4654052。数字从--
到?
开始。 ?
可以是任何非数字字符。
here-is-some-string--4654052?day=2018-10-17
我有tried \D.*|\D+
,但它希望文本以数字开头。
答案 0 :(得分:2)
如果您希望文本以数字开头,则可以使用捕获组。试试这个表达式:
--(\d+)\D
\d+
代表“一个或多个”数字,而\D
代表非数字。
答案 1 :(得分:1)
您可以在sed
中使用类似的内容:
$ echo "here-is-some-string--4654052?day=2018-10-17" | sed "s/^.*--\([0-9][0-9]*\)?.*/\1/g"
Output: 4654052
它的工作原理是在--
之后和?
符号之前为具有1个或多个数字的数字创建后向引用。
答案 2 :(得分:1)
在JavaScript中,您可以使用以下正则表达式:
/[-]{2}([0-9]+)/
通过匹配2个hyphen
字符,然后匹配任何一组number
的字符一次或更多次来起作用。它将创建一个具有匹配项的array
,可以通过索引访问捕获的组。
要访问网上论坛(包含所需的号码),您可以执行以下操作:
var text = 'here-is-some-string--4654052?day=2018-10-17';
var matches= text.match(/[-]{2}([0-9]+)/);
if (matches && matches.length > 1)
{
var number = matches[1];
}