如何使用正则表达式从字符串中查找字母数字单词
本文关键字:数字 单词 查找 何使用 正则表达式 字符串 | 更新日期: 2023-09-27 18:34:01
获得整个订单20%的折扣和免费送货(仅限首次客户)!在结账时NEW20VISION输入优惠券代码。限时优惠。
我正在从数据库获得这种类型的字符串。我必须找出字符串中是否有任何字母数字单词。如果它包含任何字母数字单词。我已经强调了这一点。就像上面的情况一样,它是:NEW20VISION<</p>
使用以下正则表达式 /[a-zA-Z0-9]/
或检查链接:http://www.dreamincode.net/code/snippet5818.htm
Raphaël Althaus 是对的,但我认为最好为它添加一些被动组以避免获得无用的匹配
用于测试的字符串:
Get 20% Off Your Entire Order & FREE Shipping (first55 time55 custo55mers only)! Enter coudf45pon code NEW20VISION at checkout. Limited time offer.
Raphaël Althaus的正则表达式:
'b[a-zA-Z'd]*(([a-zA-Z]+'d+)|('d+[a-zA-Z+]))[a-zA-Z'd]*'b
我的正则表达式:
'b[a-zA-Z'd]*(?:(?:[a-zA-Z]+'d+)|(?:'d+[a-zA-Z+]))[a-zA-Z'd]*'b
Raphaël Althaus的正则表达式结果:
===next match===
Group[0]: first55
Group[1]: t55
Group[2]: t55
Group[3]:
===next match===
Group[0]: time55
Group[1]: e55
Group[2]: e55
Group[3]:
===next match===
Group[0]: custo55mers
Group[1]: 5m
Group[2]:
Group[3]: 5m
===next match===
Group[0]: coudf45pon
Group[1]: 5p
Group[2]:
Group[3]: 5p
===next match===
Group[0]: NEW20VISION
Group[1]: 0V
Group[2]:
Group[3]: 0V
我的正则表达式的结果:
===next match===
Group[0]: first55
===next match===
Group[0]: time55
===next match===
Group[0]: custo55mers
===next match===
Group[0]: coudf45pon
===next match===
Group[0]: NEW20VISION
嗯
,我认为有点混乱,因为你搜索alphaAND数字单词("20","20ab","test"被认为是字母数字)。
这个应该可以工作(可以简化,我很确定...
使用 Regex.Rereplace 进行测试,NEW20VISION 超出了您的字符串。
var regex = @"'b[a-zA-Z'd]*(([a-zA-Z]+'d+)|('d+[a-zA-Z+]))[a-zA-Z'd]*'b";
var text = "Get 20% Off Your Entire Order & FREE Shipping (first time customers only)! Enter coupon code NEW20VISION at checkout. Limited time offer.";
var text2 = "20 test 1020test test2010, test10 20";
var t2 = Regex.Replace(text, regex, string.Empty);
var t3 = Regex.Replace(text2, regex, string.Empty);
这个怎么样:
Regex regexObj = new Regex(@"'w*(?:'d'p{L}|'p{L}'d)'w*");
这匹配至少包含一个数字后跟字母的字母数字单词,反之亦然。
唯一的"疣"是'w
也与下划线匹配。如果你不想这样,它会变得更丑一点:
Regex regexObj = new Regex(@"['d'p{L}]*(?:'d'p{L}|'p{L}'d)['d'p{L}]*");