regex - 如何将可选字符串组合在一起
问题描述
我需要一个正则表达式来验证
"Optional str1 as string = ''"
,
但
"str2 as string"
也
"str3 as boolean, Optional dtm as date = Now"
所以当"Optional"
被使用时必须有一个"="
标志
但是"Optional"
是可选的
这是我尝试过的:
(Optional\s|)(.*)(\s=\s|)(.*)
这是不对的。它验证了太多。
有什么提示吗?
解决方案
您可以使用锚点^
来断言字符串的开头。
然后匹配字符串,如果它包含 Optional 后跟字符串中的等号,或者使用负前瞻(如果支持)并匹配整行,如果它不包含 Optional 使用交替|
^(?:.*\bOptional\b.*\s=\s.*|(?!.*\bOptional\b).+)
解释
^
字符串的开始(?:
非捕获组.*\bOptional\b.*\s=\s.*
如果它包含 Optional 和空格字符之间的等号,则匹配整行|
或者(?!.*\bOptional\b).+
如果不包含 Optional,则匹配整行
)
关闭非捕获组
推荐阅读
- windows - 如何使用命令行工具解码 base64 文件
- javascript - 使用可关闭选项自动打开模式
- javascript - React Typescript - 来自单个 JSON 的表格中的垂直和水平数据
- c++ - 素数整数乘法表c ++
- python - Edit response codes for api's
- sql - 如何更正此 SQL 查询?
- javascript - 使用图像和绘图旋转 Html Canvas
- angular - 如何根据日期属性过滤对象
- macos - mac 和 rhel 之间的键盘映射软件 - 交换控制和命令键
- python - 我的脚本在 Pycharm 中运行非常缓慢