c# - 正则表达式强制和可选组
问题描述
我想创建一个正则表达式,其中包含必须包含在字符串中的组和仅是可选的组。我为此使用c#。
我的目标字符串看起来像这样
##my_first_string-2#E+1##
##my_second_string-2#E-2##
##my_third_string__##
我有以下要求:
- ##在开头和结尾都是强制性的(但这不一定是行的开头或结尾)
- ##和 #(或## )之间的字符串也是强制性的
- E+{Numbers} 或 E-{Numbers} 是可选的
到目前为止,我想出了
(##.*?##)
=> 匹配 2 ## ## 之间的所有字符
(##)([A-Za-z\-])\w+(##)
=> 匹配第一个字符串。但由于某种原因,这捕获了##my_first_string-2而不仅仅是 my_first_string-2
你能帮我为我的要求创建一个正则表达式吗?
解决方案
尝试这个:
##([^#]+?)(#E[+-][0-9]+)?##
重要的部分是:
(#E[+-][0-9]+)?
这 ”?” 量词指定零次或一次出现
将以下内容替换为字符串的字符要求,目前它只是“除 # 之外的所有内容”
([^#]+?)
希望这可以帮助。
推荐阅读
- c++ - 如何让 boost::asio::use_future 返回 boost::future?
- android - 如何在 GLSurfaceView 上显示 Android MediaCodec 解码帧
- c# - 具有默认值字段的构造函数重载
- c - 我认为我的 DFS_cycle 函数中缺少某些内容。所以我的代码在调用 DFS_cycle 函数之前终止
- css - 如何修复 CSS Flexbox 中的边距
- java - 在关闭应用程序时单击按钮后出现致命错误
- powershell - 如何在 Windows Server 2012/2016/2019 上正确设置 Kiosk 模式?
- php - 当我为我的 Laravel 项目调用任何工匠命令时,它总是给我一个错误
- css - 嵌套的 vh 似乎有不同的高度
- amazon-web-services - 运行 Sagemaker 管道的 ProcessingStep 时,如何解析 Python 文件的参数?