Regex 正则表达式:这个或那个,或者没有
我该如何写一个正则表达式来表示“这个或那个,或者以上都没有?” 基本上,我有字符串Regex 正则表达式:这个或那个,或者没有,regex,Regex,我该如何写一个正则表达式来表示“这个或那个,或者以上都没有?” 基本上,我有字符串myapplication,myapplication.exe,和myapplication.app。我如何编写一个匹配所有这些的正则表达式 对于前两个,我将使用myapplication(.exe)?。我可以使用myapplication(.exe)?(.app)?,但这也会匹配不应该匹配的myapplication.exe.app 那些?你就快拿到了 ^myapplication(\.exe|\.app)?$
myapplication
,myapplication.exe
,和myapplication.app
。我如何编写一个匹配所有这些的正则表达式
对于前两个,我将使用myapplication(.exe)?
。我可以使用myapplication(.exe)?(.app)?
,但这也会匹配不应该匹配的myapplication.exe.app
那些?你就快拿到了
^myapplication(\.exe|\.app)?$
- 用于“或”
- 请注意,您需要退出
,因为 - 以确保模式与整个输入匹配
^myapplication(\.exe|\.app)?$
- 用于“或”
- 请注意,您需要退出
,因为 - 以确保模式与整个输入匹配
匹配
.exe
或.app
或不匹配。。。匹配.exe
或.app
或不匹配:
^myapplication\(\.exe\|\.app\|)$
或者,根据您使用的正则表达式的风格:
^myapplication(\.exe|\.app|)$
注意
和)
之间不存在任何内容(也称为空字符串),以匹配.exe
或.app
或任何内容。。。匹配.exe
或.app
或不匹配:
^myapplication\(\.exe\|\.app\|)$
或者,根据您使用的正则表达式的风格:
^myapplication(\.exe|\.app|)$
请注意,
和)
myapplication.exe匹配项和myapplication.exe.app匹配项之间不存在任何内容(也称为空字符串)。模式中没有任何东西可以阻止它同时匹配两个。@codekaizen啊,我想。锚定端点,这就解决了。类似地,它与myapplicationfoobarspameggs匹配,但现在只有当它都是一行时才匹配,这是不清楚的。@codekaizen OP没有明确说明输入是如何传递的。这就是回答正则表达式问题的危险…@bobbybee你是在尝试匹配完整的字符串/行吗?或者从更大的文本体中提取内容?myapplication.exe匹配项和myapplication.exe.app匹配项。模式中没有任何东西可以阻止它同时匹配两个。@codekaizen啊,我想。锚定端点,这就解决了。类似地,它与myapplicationfoobarspameggs匹配,但现在只有当它都是一行时才匹配,这是不清楚的。@codekaizen OP没有明确说明输入是如何传递的。这就是回答正则表达式问题的危险…@bobbybee你是在尝试匹配完整的字符串/行吗?或者从一个更大的文本中提取一些东西?为什么这种方法会比简单地让组成为可选的(如我上面的回答)更可取?我并不是说这种方法本身是无效的,但对我来说它确实不寻常/不理想。@MattBall:我并不是说它一定是可取的(你的方法是完全有效的)。但我觉得这并不奇怪。首先,它更接近问题陈述(“这个或那个或上面没有”)。为什么这种方法会比简单地让组成为可选的(如我上面的回答)更可取?我并不是说这种方法本身是无效的,但对我来说它确实不寻常/不理想。@MattBall:我并不是说它一定是可取的(你的方法是完全有效的)。但我觉得这并不奇怪。一方面,它更符合问题陈述(“这或那或以上都没有”)。