2012-05-14 6 views
1

Получить 20% от вашего полного заказа & БЕСПЛАТНАЯ доставка (только для клиентов первого раза)! Введите код купона NEW20VISION при оформлении заказа. Ограниченное по времени предложение.Как найти буквенно-цифровое слово из строки, используя регулярное выражение?

Я получаю этот тип строки из db.I должны выяснить, есть ли буквенно-цифровое слово в string.If содержит любые буквенно-цифровые word.I должны подчеркнуть it.Like в приведенном выше случае это : NEW20VISION

+0

Я попытался как «\ ш + \ d + \ S» – user1153540

+0

Regex соответствие слова, по крайней мере, 1 номером в нем в основном 3 модели ... начинается с номера, за которым следуют буквы или цифры ... начинается с букв или цифр, за ними следует число, затем больше букв или цифр ... и, наконец, буквы или цифры, заканчивающиеся на число. Попробуйте написать это как захват регулярных выражений и посмотреть, как это происходит. Но да, я согласен с Рафом: «Что ты пробовал?» –

+0

ОК, но я также пробовал @ "^ [a-zA-Z0-9] * $", но без результатов – user1153540

ответ

1

Используйте следующие Regex /[A-Za-Z0-9]/

Или проверить ссылку: http://www.dreamincode.net/code/snippet5818.htm

+0

Это не проверяет, является ли хотя бы одна буква и одна цифра частью строки. –

0

Ну, есть немного путаницы, я думаю, потому что вы будете искать alphaANDnumeric слова («20», «20ab», «test» считаются буквенно-цифровыми CS).

это один должен работать (может быть упрощена, я совершенно уверен, ...)

Испытано с Regex.Replace и 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); 
1

Рафаель 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 
0

Как насчет этого:

Regex regexObj = new Regex(@"\w*(?:\d\p{L}|\p{L}\d)\w*"); 

Это соответствует буквенно-цифровому слову, которое содержит, по меньшей мере, одна цифра, за которой следует буква или наоборот.

Единственная «бородавка» заключается в том, что \w также соответствует подчеркиванию. Если вы не хотите этого, он получает slighty более некрасиво:

Regex regexObj = new Regex(@"[\d\p{L}]*(?:\d\p{L}|\p{L}\d)[\d\p{L}]*"); 
Смежные вопросы