regex - 正则表达式匹配多组 a-zA-Z0-9- 但不是 2 个连续的下划线 __
问题描述
我有几个字符串,通常是单词和字母,大写和小写,与数字混合。除非字符串中有两个连续的下划线,否则我想将它们全部匹配。我的字符串示例:
first-string-String-71-word
second-otherword-X-17-word-last-word
third-nextword-8-word__otherword
现在我正在寻找一个匹配第一个和第二个但不匹配第三个的正则表达式。
([a-zA-Z0-9-]+)
(?!__)([a-zA-Z0-9-]+)
([a-zA-Z0-9-^(__)]+)
这些似乎都不起作用 - 这里的正确方法是什么?
解决方案
_
您可以在字符串中连续添加两个负前瞻。请注意,您需要将正则表达式锚定到字符串的开头和结尾,否则它可以从中途匹配。
^(?!.*?__)([a-zA-Z0-9_-]+)$
https://regex101.com/r/i7AnSS/3
请注意,这假设您的字符串允许在其中包含单个字符串_
。如果不是这种情况,那么简单
^([a-zA-Z0-9-]+)$
将排除其中包含的任何字符串_
。
推荐阅读
- terraform - AwsBackUp 支持 terraform 中的跨区域复制
- sprite-kit - 如何使用 GameplayKit 状态机进行精灵动画?
- javascript - 有没有办法通过来自维基百科 api 的一个获取请求来搜索页面并提取其信息?
- php - laravel hasOneThrough 与垃圾并不会删除中间的软删除范围
- vb.net - VB.NET 将标签链接到另一个标签
- python - 如何使用pyspark绘制时间序列折线图
- gdb - OpenOCD - 卡在断点上,跳过并继续不起作用
- javascript - 我正在尝试使图像出现 onclick,并且脚本未执行
- node.js - 如何使用 NodeJS 对 MongoDB 数据进行排序
- sql-server - 我应该为此 SQL Server 设置的并行成本阈值是多少?