使用正则表达式,我想只选择以下单词:
我对正则表达式并不是很好,但到目前为止,我已经尝试过[^\d\s]*(\d+)(?!.*\1),这使我无法接近所需的输出:(
以下是输入字符串:
I would like abc123 to match but not 123.
ab12s should also match
Only number-words like 1234 should not match
Words containing same numbers like ab22s should not match
234 should not match
hel1lo2haha3hoho4
hel1lo2haha3hoho3
Run Code Online (Sandbox Code Playgroud)
预期比赛:
abc123
ab12s
hel1lo2haha3hoho4
Run Code Online (Sandbox Code Playgroud)
您可以使用
\b(?=\d*[a-z])(?=[a-z]*\d)(?:[a-z]|(\d)(?!\w*\1))+\b
Run Code Online (Sandbox Code Playgroud)
https://regex101.com/r/TimjdW/3
用词边界锚定模式的开始和结束\b,然后:
(?=\d*[a-z]) - 在单词的某处预测字母字符(?=[a-z]*\d) - 在单词的某处找一个数字的前瞻(?:[a-z]|(\d)(?!\w*\1))+ 反复匹配:
[a-z] - 任何字母字符,或(\d)(?!\w*\1) - 在同一个单词中不会再出现的数字| 归档时间: |
|
| 查看次数: |
145 次 |
| 最近记录: |