如何确保正则表达式仅在某个字符后匹配

时间:2012-01-04 14:18:54

标签: c++ regex

有没有办法指定匹配字符串但是来自此字符串中某个位置的正则表达式?我的意思是我有一句话:

"Somebodys_value is % value"  

我想检查我的正则表达式是否匹配此句子,但仅在%符号后。

3 个答案:

答案 0 :(得分:1)

从表面上看,似乎你可以使用这个正则表达式(斜杠是简单的分隔符):

/%.*value/

在看到百分比之后,它会查找您的价值。使用C ++进行编码只是略显繁琐,但由于您没有说明您正在使用哪个正则表达式包,因此很难知道要编写哪些代码。您可能计划使用许多可能的正则表达式包。

答案 1 :(得分:1)

仅使用RegEx,您只需在模式中包含%。如果您的模式为value,则可以将其更改为%.*value


另一种方式,更依赖于您的引擎,是提供偏移量。您可以使用类似strpos的函数来查找%,然后说在此之后开始匹配。


另一种方法是将%之后的所有内容复制到新的缓冲区/字符串中,然后尝试匹配它。


更具体的细节取决于您正在使用的引擎。

编辑:
听起来你不想要匹配中的%。一些实现具体的方法是......

  • (?:%).*value其中%位于非捕获组
  • %\K.*value其中\ K丢弃之前的所有内容(有限支持)
  • %(.*value)您将使用第一个子模式(通常称为$ 1)。
  • 或者您可以从子1开始执行任何操作,并忽略子0处的%。

答案 2 :(得分:0)

这一切都取决于您正在使用的特定正则表达式API,当然,我看到两种不同的选择:

  1. 在致电char*功能
  2. 之前,提前%指向match()
  3. 正如@JonathanLeffler所说,在正则表达式中包含'%'。
  4. 版本1可能更有效率,但前提是您已经知道'%'在哪里!