【问题标题】:RegEx for searching various formats of a stringRegEx 用于搜索各种格式的字符串
【发布时间】:2019-05-12 13:11:18
【问题描述】:

我有两个正则表达式:

([^.]*string)
((?<![.]\.)string)

两者都有效。但是,我不想搜索其中有句点的字符串。

1).string

2)string

对于第一个正则表达式,它匹配字符串的其余部分,除了句点。

第二个是完全匹配

正则表达式匹配两者。

我想要一个只有第二个的正则表达式。

【问题讨论】:

  • 试试这个:^string$
  • 这有点含糊,但据我了解,为什么不使用\w 来匹配句点。例如^\w+
  • 你需要(?&lt;!\.)string
  • 你能解释一下你想要做什么吗?
  • ((?&lt;![.]\.)string) 实际上是一个非常接近的解决方案,它“几乎”正确,但它不起作用,因为它匹配前面没有 两个 点的string . [.]\. 匹配 .. 字符串。

标签: regex regex-lookarounds regex-group regex-greedy


【解决方案1】:

如果我们希望传递除 . 之外的所有内容,我们将使用如下表达式传递换行符:

([\s\S]*?)(\.?)
([\w\W]*?)(\.?)
([\d\D]*?)(\.?)

Demo.

正则表达式电路

jex.im 可视化正则表达式:

如果我们希望找到不带点的string 实例,例如.string 或.string。或 .string",那么我们可以简单地在an expression similar to 中列出它们:

 ([\s\S]*?)(\sstring|\x22string\x22|\x27string\x27)?
 ([\w\W]*?)(\sstring|\x22string\x22|\x27string\x27)?
 ([\d\D]*?)(\sstring|\x22string\x22|\x27string\x27)?

【讨论】:

  • 原谅我的无知,([\s\S]*?)(.*?) 有什么区别?
【解决方案2】:

试试这个正则表达式:

((?<!\.)string)

它使用消极的后视。

【讨论】:

    猜你喜欢
    • 2012-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-18
    相关资源
    最近更新 更多