我有一个像这样的字符串。
var string = "My id is 6aT7u. I used to play basketball and cricket.";
我必须使用正则表达式提取ID,即一个字母数字单词。在这种情况下,我必须提取6aT7u
。
我尝试了[a-zA-Z0-9]
,但这不起作用。
可以使用
b(?:d+[A-Za-z]|[A-Za-z]+d)[a-zA-Z0-9]*b
参见regex演示。细节:
b
- a字边界(?:d+[A-Za-z]|[A-Za-z]+d)
-一个非捕获组匹配d+[A-Za-z]
-一个或多个数字,然后是一个ASCII字母|
-或[A-Za-z]+d
-一个或多个ASCII字母加一个数字
[a-zA-Z0-9]*
- 0个或多个ASCII数字或字母b
-一个字边界。
在Dart中获得第一个匹配可以使用如下代码完成:
var string = "My id is 6aT7u. I used to play basketball and cricket.";
var rx = RegExp(r'b(?:d+[A-Za-z]|[A-Za-z]+d)[a-zA-Z0-9]*b');
var match = rx.firstMatch(string);
if (match != null) {
print(match.group(0));
}
// => 6aT7u