0

我对正则表达式很陌生,说实话,这让我很困惑。在所述字符串中达到某个字符后,我需要抓取该字符串。我认为最简单的方法是使用正则表达式,但是就像我说的那样,我对它很陌生。任何人都可以帮助我或指出正确的方向吗?

例如:我需要检查字符串“23444:thisstring”并将“thisstring”保存到一个新字符串中。

4

4 回答 4

4

如果这是你的字符串:

I'm very new at regex, and to be completely honest it confounds me

并且您想在第一个“c”之后获取所有内容,那么这个正则表达式将起作用:

/c(.*)/s

它将在第一个匹配的组中返回此匹配:

"ompletely honest it confounds me"

在这里的正则表达式测试器上试试:正则表达式测试器

解释:

  • c是你要找的角色
  • .*(与/s) 匹配剩下的所有内容
  • (.*)捕获.*匹配的内容,使其$1在列表上下文中可用并返回。
于 2013-04-11T19:20:06.307 回答
1

用于删除某个字符之前的字符的正则表达式!

您可以像这样使用前瞻

.*(?=x)

其中 x 是特定字符或单词或字符串。{使用., $, ^,等字符在正则表达式*+具有特殊含义,因此在 x 中使用时不要忘记转义}


编辑

对于您的示例字符串,它将是

.*(?=thisstring)

.*匹配 0 到多个字符直到thisisstring

于 2013-04-11T19:19:38.483 回答
0

这是匹配“之前”之后的所有内容的单行解决方案

print $1."\n" if "beforeafter" =~ m/before(.*)/;

编辑:虽然可以使用lookbehind,但这不是必需的。分组提供了一种更简单的解决方案。

于 2013-04-11T19:21:21.760 回答
0

要获取之前的字符串:在您的示例中,您必须使用[^:][^:]*:\(.*\). 请注意,您应该至少有一个[^:]后跟任意数量的[^:]s,后跟一个实际的 :,即您要搜索的字符。

于 2013-04-11T19:26:54.990 回答