我的正则表达式知识非常有限,但我正在尝试编写/查找将捕获文档中以下字符串类型的表达式:
DO匹配:
不匹配:
这样的表达可能吗?基本上,它应该找到包含字母和数字的任何字符串,无论字符串是否包含短划线或下划线。我可以使用以下两个正则表达式找到前两个:
但是搜索可能的短划线和连字符会使它更复杂......
感谢您提供的任何帮助! :)
更多信息:
我在以下方面取得了一些进展:([A-Z | a-z] [0-9] + - * _ * \ w +)但它不会捕获带有多个连字符的字符串。
我有一个包含大量文本字符串和数字字符串的文档,我不想捕获它们。我想要的是任何产品代码,可以是带或不带连字符和下划线的任何长度字符串,但总是包含至少一个数字和至少一个字母。
答案 0 :(得分:4)
您可以在不区分大小写的模式下使用以下表达式:
\b((?:[a-z]+\S*\d+|\d\S*[a-z]+)[a-z\d_-]*)\b
说明:
\b # Assert position at a word boundary
( # Beginning of capturing group 1
(?: # Beginning of the non-capturing group
[a-z]+\S*\d+ # Match letters followed by numbers
| # OR
\d+\S*[a-z]+ # Match numbers followed by letters
) # End of the group
[a-z\d_-]* # Match letter, digit, '_', or '-' 0 or more times
) # End of capturing group 1
\b # Assert position at a word boundary