我正在尝试编写一个可以从字符串中提取不同类型的字符串+数字+符号组合的正则表达式。我试图提取的字符串类型是:
avs-tldr-02
cc+asede
x86_64
我正在测试的边缘案例类型是出现在句子开头、中间和结尾的这些字符串:
avs-tldr-02 this is a test
cc+asede this is a test
x86_64 this is a test
this is a test avs-tldr-02 this is a test
this is a test cc+asede this is a test
this is a test x86_64 this is a test
this is a test avs-tldr-02
this is a test cc+asede
this is a test x86_64
基于这个出色的答案,我涉足了 RegEx 中的“环视”断言,并得出了以下结论:
(?=.*[:alnum:])(?=.*[:punct:])([a-zA-Z0-9_-]+)
但是,这一直匹配字符串的第一个单词 - 我理解为什么会发生这种情况,但我不知道如何调整它以适用于我的用例。
我如何修改此设置以获取所需的信息/是否有其他方法可以解决此问题?
我使用了这个正则表达式
/([^\s]+?[-_+][^\s]+)/g
我不熟悉r但经过测试的正则表达式很好看!https://regex101.com/r/Sxully/1
注意:在 "" 或 '' 中实现给定的正则表达式时,请注意反斜杠,\\
这取决于语言和用法
如果你想接受 '_word_starting_by_underline' 使用这个正则表达式:(它不会有用:))
/([^\s]*?[-_+][^\s]+)/g
// ^^^^ + changed to * to support nothing before [-_+]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句