C# 在字符串之间使用空格进行匹配,并使用重叠空格连接模式

C# 在字符串之间使用空格进行匹配,并使用重叠空格连接模式,c#,regex,backtracking,regex-lookarounds,C#,Regex,Backtracking,Regex Lookarounds,在以下字符串中: G 767 我试图将G和767与我在运行时加入的两个模式相匹配,因为它们都是单独的类型,我有一个单独的类 ^(?<ServiceType>[A-Z])(?= ) ^(?[A-Z])(?=) 及 (?也许您可以使用以下模式: ^(?[A-Z])\s 和 (?^(?[A-Z])(?=)+(?我希望能够集中两种模式,使它们之间的空间,即每个模式已经匹配的空间,对它们来说都是通用的,但我不想添加额外的空间。我原希望两个环视仪在空间上重叠。@t3chb0t我更改了答案。

在以下字符串中:

G 767
我试图将
G
767
与我在运行时加入的两个模式相匹配,因为它们都是单独的类型,我有一个单独的类

^(?<ServiceType>[A-Z])(?= )
^(?[A-Z])(?=)


(?也许您可以使用以下模式:

^(?[A-Z])\s

(?
^(?[A-Z])(?=)+(?我希望能够集中两种模式,使它们之间的空间,即每个模式已经匹配的空间,对它们来说都是通用的,但我不想添加额外的空间。我原希望两个环视仪在空间上重叠。@t3chb0t我更改了答案。希望它现在可以工作。实际上我应该接受两个答案;-)但请注意这一点。@vks感谢您解释零宽度断言。我将在字符串后使用空格,并在下一个字符串中使用lookback。我必须添加其他一些模式,因此我认为这似乎是一个很好的折衷方案。您的最终正则表达式看起来如何?您的lookarounds不会使用任何字符。如果您将这两个模式结合在一起空间必须匹配,但你的正则表达式无法识别。最后的正则表达式只是第一个+第二个。空间由前向和后向匹配,但前提是我单独测试它们。合并的模式不能这样工作。lookarounds不消耗任何字符。你必须添加它。但你的第一个正则表达式强制执行此space.为什么不将其包含到模式中?
^(?[A-Z])\s
这应该对您的测试和连接有效。尝试使用
:。@stribizev这只匹配第一个字符串。知道这一点后,解决了我在后续模式中遇到的一些其他问题;-)@t3chb0t很高兴它有帮助:)
(?<= )(?<AircraftType>[A-Z0-9]{3})(?= |$)
var pattern = firstPattern + secondPattern;
^(?<ServiceType>[A-Z])(?= ) +(?<= )(?<AircraftType>[A-Z0-9]{3})(?= |$)