检索C#正则表达式中并列关系之间的字符串

检索C#正则表达式中并列关系之间的字符串,c#,regex,windows-forms-designer,regex-lookarounds,C#,Regex,Windows Forms Designer,Regex Lookarounds,我想知道是否可以突出显示{任何字符串之间的字符串 这是我试过的 ^{(.*)}$ 这是可行的,但这个案例也检索到了偏执 {hi} 但是,我只想检索字符串,而不是括号 {你好} 示例: 地狱(?=o)试试这个语法,它将完全匹配地狱词,后面跟“o”而不是hello 就像这样,我想匹配字符串,当它在开括号之后开始,在闭括号和非括号之间 谁能告诉我,我们怎么能忽略括号而只检索字符串呢 由于这个查询涉及到自定义控件,我需要使用正则表达式的解决方案 注意 有关更多信息,请参见屏幕截图 输出 预期的 感

我想知道是否可以突出显示{任何字符串之间的字符串

这是我试过的

^{(.*)}$
这是可行的,但这个案例也检索到了偏执

{hi}

但是,我只想检索字符串,而不是括号

{你好}

示例:

地狱(?=o)试试这个语法,它将完全匹配地狱词,后面跟“o”而不是hello

就像这样,我想匹配字符串,当它在开括号之后开始,在闭括号和非括号之间

谁能告诉我,我们怎么能忽略括号而只检索字符串呢

由于这个查询涉及到自定义控件,我需要使用正则表达式的解决方案

注意

有关更多信息,请参见屏幕截图

输出

预期的


感谢您的帮助。

无论出于何种原因,您都不能使用组-在您的示例中,您已经使用了组。只需在模式的开头添加一个lookback来完成模式

(?<={)[^}]*(?=})

(?无论出于何种原因,您都不能使用组-在您的示例中,您已经使用了。只需在模式的开头添加一个lookback来完成模式

(?<={)[^}]*(?=})

(?由于您似乎特别希望检索大括号(而不是括号)之间的值,因此需要执行正则表达式匹配-即分组

string phrase = "{hi} my name is Chris.";    
Regex exp = new Regex(@"\{(.*?)\}");
string match = exp.Match("{hi}").Groups[1].Value;

现在,我承认这不是最直观的方法;但是,它肯定能完成任务。完全匹配返回“{hi}”,而第1组返回您要查找的“hi”值。

因为您似乎特别想要检索大括号(而不是括号)之间的值,您将需要执行正则表达式匹配-即组

string phrase = "{hi} my name is Chris.";    
Regex exp = new Regex(@"\{(.*?)\}");
string match = exp.Match("{hi}").Groups[1].Value;

现在,我承认这不是最直观的方法;但是,它肯定能完成任务。完全匹配返回{hi},而组1返回您要查找的值“hi”。

您可以使用以下正则表达式:


(?您可以使用此正则表达式:

(?
我想知道是否可以突出显示{any string}之间的字符串

在正则表达式领域中,匹配捕获与基本分组之间存在差异

您希望匹配
{hi}
,但希望将
hi
放入捕获组。这是使用
()
构造模式完成的。匹配可以包含不同组中的所有三个组

string phrase = "{hi} my name is Chris.";    
Regex exp = new Regex(@"\{(.*?)\}");
string match = exp.Match("{hi}").Groups[1].Value;
记住这些事项

  • 组[0]
    始终是整场比赛
  • 组[1-N]
    是在指定
    ()
    构造时的单个捕获
  • 模式
    {Hi}
    将与“{Hi}”匹配,该匹配可以在
    组[0]
    的整个匹配中找到
  • 模式
    {(Hi)}
    也将匹配
    组[0]
    中的“{Hi}”,但它将把“Hi”捕获到
    组[1]

我不能谈论winforms中突出显示文本的过程

我想知道是否可以突出显示{any string}之间的字符串

在正则表达式领域中,匹配捕获与基本分组之间存在差异

您希望匹配
{hi}
,但希望将
hi
放入捕获组。这是使用
()
构造模式完成的。匹配可以包含不同组中的所有三个组

string phrase = "{hi} my name is Chris.";    
Regex exp = new Regex(@"\{(.*?)\}");
string match = exp.Match("{hi}").Groups[1].Value;
记住这些事项

  • 组[0]
    始终是整场比赛
  • 组[1-N]
    是在指定
    ()
    构造时的单个捕获
  • 模式
    {Hi}
    将与“{Hi}”匹配,该匹配可以在
    组[0]
    的整个匹配中找到
  • 模式
    {(Hi)}
    也将匹配
    组[0]
    中的“{Hi}”,但它将把“Hi”捕获到
    组[1]


我无法说明在winforms中突出显示文本的过程。

请澄清您的具体问题,或添加其他详细信息,以突出显示您所需的内容。由于目前编写的内容,很难准确地说出您的要求。请参阅页面以获取澄清此问题的帮助question@PedroLobito更新了我的要求。请让我知道,如果它对您有帮助,您正在询问如何使在线regex测试仪按预期工作。这是一种错误的方法-使用您的regex内部代码,然后提问。请注意,您已经在使用捕获组-这就足够了,只需使用
Match.Groups[1]在C#中使用.Value
。或者如果您使用
$1
。如果没有C#代码,问题就不清楚了。突出显示您的意思是
word
?伙计们,为了更好地解释,我使用了online regex tester。示例:hell(?=o)尝试一下这种语法,当它后面跟“o”时,它将与hell单词完全匹配。就像那样,我想匹配字符串,当它在开括号后和闭括号之间开始时。请澄清您的具体问题或添加其他详细信息,以突出显示您所需的内容。由于目前编写的内容,很难准确地说出您要问的内容。请参阅页面以获取澄清此问题的帮助question@PedroLobitoU更新了我的要求。请让我知道,如果这对你有帮助的话。你问的是如何让在线regex测试仪按预期工作。这是一种错误的方法-使用你的regex内部代码,然后问一个问题。注意,你已经在使用一个捕获组-这就足够了,只需使用
Match.Groups[1]在C#中使用.Value
。或者,如果您替换,只需使用
$1
。如果没有C#code,问题就不清楚了。突出显示您的意思是
word
?伙计们,我使用