regex-group - 如何创建可选的命名组?
问题描述
我想在命名组中捕获字符串。第二个字符串是可选的。如果此可选字符串缺少我的正则表达式代码不起作用。
(?<entry1>string1) (?<entry2>string2)? (?<entry3>string3)
如何使第二个字符串可选?
解决方案
如果我删除“?” 在每个组的开头(它们是做什么用的?https: //www.regextester.com/ 不接受它们)您的表达式适用于这些字符串:
<entry1>string1 <entry3>string3
<entry1>string1 <entry2>string2 <entry3>string3
您的正则表达式的问题是您可以省略第二组表达式<entry2>string2
,但不能省略该组之后的空格。以下正则表达式字符串可能会按照您的预期工作。
(<entry1>string1) (<entry2>string2?) ?(<entry3>string3)
(<entry1>string1) ((<entry2>string2) )?(<entry3>string3)
第二个字符串可能更适合您的需求,但具有更多的组表达式。根据您是否真的需要空间,您可以微调正则表达式。
推荐阅读
- c# - 在asp.net的另一个页面中的会话传递问题?
- arrays - 如何使用 Mongoose 正确更新数组中的元素
- firebase - 是否可以将 Firebase Admin SDK 添加到使用实时数据库和 Firebase 存储的 android 应用程序中
- azure-devops - Azure DevOps YAML 管道手动干预作业与其他作业并行运行
- swiftui - 带有数值的格式化程序错误的Swiftui TextField
- excel - 根据excel中的其他列值为列分配值
- javascript - ramda 阵列清理数据以产生唯一的阵列
- magento2 - Magento 2.3.3 问题:在产品页面上传图片时出错
- windows - 从命令行构建 docker 容器(Windows)
- reactjs - 如何更改 ionic v4 React 上的 onClick 元素?