2009-11-12 62 views
3

我们可以放入一个正则表达式中,布尔逻辑:行以'a'或'b'开头。 通过使用FileHelpers实用程序触发问题,该实用程序对于“ExcludeIfMatchRegex”具有“记录条件选择器”文本框。实用程序是用C#编写的。 ^一 - 的作品,只是不怎么写的^ A或^ B单个正则表达式中的布尔逻辑 - 可能吗?

回答

6

使用|(管道)功能:

^a|^b 

或者,在扩展格式:

^a # starts with an A 
| # OR 
^b # starts with a B 
+0

Downvoter:这是怎么回事? – 2009-11-12 00:08:33

+0

在FileHelpers中没有适用于我 [ConditionalRecord RecordCondition.ExcludeIfMatchRegex,“^ \”|^t“)] – MicMit 2009-11-12 00:29:03

+0

空格在正则表达式中很重要。正则表达式“^ \”|^t“的意思是:”匹配字符串的开始,引号,后跟空格,或者匹配空格,然后匹配字符串的开头,然后匹配't'。“匹配空格,然后匹配字符串的起始处将始终失败 - 这是不可能的!:)删除空格,它应该工作正常 – 2009-11-12 00:39:56

4

如何:^ [AB]

+0

我的理解是它应该适用于单个字符的开始,它确实如此。我还需要使用其他答案可以完成的子字符串。 – MicMit 2009-11-12 00:25:18

+0

这不是必须否定像[^ ab],因为^字符类外部代表行的开始。 – Bruno 2013-10-23 11:29:17

3

有一个很难理解你,但是......如果你正在寻找对于比赛,如果字符串以“A”或“b”开头,和失败,否则,你可以这样做:

^(a|b)(.+)$ 

然后,当你比赛的组,第一组将是要么一个“ a“或”b“,第二组将是字符串的其余部分。

+0

我对FileHelpers内部不感兴趣,但你的变体为我工作。 [ConditionalRecord(RecordCondition.ExcludeIfMatchRegex,“^(\”| \ t | 3 T)(。+)$“)] – MicMit 2009-11-12 00:21:19

2

的一种特殊构造(?ifthen|else)允许您创建条件的正则表达式。如果如果部分评估为true,则正则表达式引擎将尝试匹配当时的部分。否则,尝试替换其他零件。该语法由一对圆括号组成。前面的括号后面必须跟着一个问号,紧随其后的是if部分,紧接着是当时的部分。这部分可以跟一个垂直条和其他部分。您可以省略其他部分,以及与之相关的垂直条。

检查出conditionals关于regex.info页面的更多详细信息。