【问题标题】:How do I match the first character in string, AFTER a certain character?如何匹配字符串中的第一个字符,在某个字符之后?
【发布时间】:2010-11-28 07:35:55
【问题描述】:

我想匹配连字符后的第一个字符。见下文。

语言:PHP 或 JavaScript。

示例:

我的名字

我要匹配字符

fn

谢谢!

【问题讨论】:

  • 哎呀,忘了提。 JavaScript。
  • 问题说“你想匹配字符串中的第一个字符,在某个字符之后?”和细节说“我想匹配字符 f 和 n”.. 你到底想要什么?
  • 如果你有多个字符:a--ba---b?另外,您需要 PHP 或 JavaScript 解决方案吗?
  • 不,排除这些例外。我们只期待这样的东西。任何一个都可以。

标签: php javascript regex


【解决方案1】:

积极的向后看是要走的路,但你可能想要

(?<=-).

(?<=-)[^-]

(如果您想避免在字符串中捕获 '-'------like--this)。

【讨论】:

  • +1。当然,这仅适用于 PHP,不适用于 JavaScript。 @cherouvim:因为它完全符合 OP 的要求:匹配前面有 - 的字符。
【解决方案2】:

试试这个:

-(.)

【讨论】:

  • 试过了,它匹配-f和-n。是否可以在结果中不包含连字符的情况下匹配它们?
  • 是的,它已经这样做了。您将使用仅包含 fn 的第一个捕获组。
  • @Ziggy:除了 JavaScript 之外,几乎所有其他当前的正则表达式实现都支持后向断言。请参阅 Wevah 的回答。
【解决方案3】:

不清楚“匹配”是否意味着“捕获”破折号后的第一个字符。

这将匹配模式:

m/-[a-zA-Z]/

这将捕获:

m/-([a-zA-Z])/

【讨论】:

  • 我想我的意思是匹配,但我不太确定,因为我是 RegExp 的新手。我尝试了这个解决方案,它匹配 -f 和 -n。是否可以在结果中不包含连字符的情况下匹配它们?
  • @Ziggy:是的,你可以使用m/(?<=-)\p{Alnum}/gm/(?<=-)[a-zA-Z]/g
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-17
  • 1970-01-01
  • 2019-07-08
  • 1970-01-01
相关资源
最近更新 更多