使用正则表达式查找包含数值的所有单词
本文关键字:单词 包含数 正则表达式 查找 | 更新日期: 2023-09-27 18:16:16
在我的Dot net应用程序中,我必须找到包含字母和数值的所有单词,我试图找到但未能找到适当的答案我有(?=.'d)'w+
regex,但它返回45作为有效的。下面是我的示例列表,其中粗体是正确的词,其他是错误的词
- madan45
- 45马丹
- mad45an
- 马丹 45
我无法输入[a-zA-Z],因为我的文本可能包含英语以外的语言,例如:5000。
(?:^|(?<='s))(?='S*'d)(?='S*(?!'s)'D)'S+(?='s|$)
试试这个。看到演示。
https://regex101.com/r/cJ6zQ3/15^(?!('d+|[A-z]+)$)'w+$
('d+|[A-z]+)$
:全字母或全数字。
(?!('d+|[A-z]+)$)
:Negative Lookahead -断言不可能匹配所有字母或数字。
(?:'d+[a-z]|[a-z]+'d)[a-z'd]*
这个Reg Ex应该可以满足你的需求。
包含字母和数值的所有单词
fail to find proper answer I have
(?=.'d)'w+
你很接近了。超前查询应该匹配数字前的任何字元,以满足数字条件。然后,在主模式中,需要一个字母:
正则表达式:
(?='w*'d)'d*[A-Za-z]'w*
<<p> regex101演示/kbd> - 超前
-
'w*
任意文字字符:[A-Za-z0-9_]
-
'd
需要1位。
-
- 主要模式
-
'd*
字母前的任意数字。 -
[A-Za-z]
要求1个字母 -
'w*
其余文字
-
这也可以:
string pattern = @"^(?='D*'d)(?='d*'D)'w+$";
检查:var inputs = new List<string> { "madan45", "45madan", "mad45an", "Madan", "45" };
foreach (var str in inputs)
Console.WriteLine($"{str} - {Regex.IsMatch(str, pattern)}");
输出:// madan45 - True
// 45madan - True
// mad45an - True
// Madan - False
// 45 - False