首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何匹配"abc?def?“而不是"abc??def?“

如何匹配"abc?def?“而不是"abc??def?“
EN

Stack Overflow用户
提问于 2012-08-18 07:37:21
回答 1查看 408关注 0票数 0

我正在尝试以下操作:

代码语言:javascript
复制
.+\?[^\?].+\?

也就是说,匹配所有内容直到"?",那么,如果没有其他"?“在此之后,匹配所有内容,直到另一个"?“。我猜它不能工作,因为第一个.+已经匹配了整个字符串。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-18 07:48:57

您的描述并不精确,但我假设您需要您的正则表达式来满足以下规则:

  1. 零个或多个非'?'
  2. A‘?’
  3. 一个或多个非'?'
  4. A '?'

这实际上非常简单。

代码语言:javascript
复制
[^?]*\?[^?]+\?

请注意,这将匹配较大字符串的子字符串。如果需要确保整个字符串与此完全匹配,则抛出^$锚点:

代码语言:javascript
复制
^[^?]*\?[^?]+\?$

解释:

  1. ^

字符串的开头。在多行上下文中,这也与行的开头匹配,但您可能不在多行上下文中。

  1. [^?]

匹配任何不是原义字符'?'.的内容

  1. *

匹配零个或多个以前的令牌。

  1. \?

匹配文字'?'.

  1. [^?]

匹配任何不是原义字符'?'.的内容

  1. +

匹配一个或多个以前的令牌。这确保您不能在一行中有两个'?‘。

  1. \?

匹配文字'?'.

  1. $

匹配字符串的结尾(或多行上下文中的行尾)。

注意:我假设在第一个'?‘之前有零个或多个非’?‘。这将与?abc?之类的代码相匹配。如果这是非法的,请将第一个*更改为+

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12014432

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档