我希望456
使用以下字符串中的正则表达式:
john#456 18 mai 2017 11:01
我用
进行了测试#(.*)
但我保留456 18 mai 2017
。
答案 0 :(得分:1)
您可以使用以下正则表达式,它将在#
:
.+#(\d+ )
测试了以下数据:
john#456 18 mai 2017 11:01
test123#123 18 mai 2017 11:01
michael#4561218 mai 2017 11:01
'(çà'_(fdlfsnd#456 18 mai 2017 11:01
lrjdlfddfdf#456 18 mai 2017 11:01
正则表达式提取:
456
123
4561218
465
465
Javascript解决方案:
const regex4id = /.+#(\d+)/g;
var text = "john#456 18 mai 2017 11:01"
var id = text.match(regex4id);
if(id != null) {
p = regex4id.exec(text);
console.log("p: " + p[1]);
}

答案 1 :(得分:0)
使用Lookahead和Lookbehind:
要离开#并在下一个空格之前,如果你想在不使用捕获组的情况下将其作为完全匹配,你也可以使用正面的lookbehind和lookahead:
(?<=#)\w+(?=\s)
(?<=#)
是一个积极的外观,可以确保#
在比赛之前\w+
匹配一个或多个字符(包括字母,数字和下划线)(?=\s)
是一个积极的前瞻,可以确保匹配后的空格\s
详细了解lookaheads and lookbehinds here。
使用捕获组:
您还可以使用捕获组而不是前瞻和后视来更快地完成此操作。 (虽然只在一场比赛中执行时差异可以忽略不计)
#(\w+)\s
在这里,您可以根据您的语言$1
或group[1]
#
代表文字#
(\w+)
表示捕获组中的一个或多个字符(第一个捕获组\s
代表单个空格希望这有帮助!