【问题标题】:Regex expression to match forward slash followed by string正则表达式匹配正斜杠后跟字符串
【发布时间】:2019-08-26 12:00:19
【问题描述】:

我需要过滤一个字符串,如果它包含三个字符串:

/A/ABC
A_ABC
Downloaded

我有两种类型的线条。全部包含Downloaded,但仅包含/A/ABCA_ABC

每个子字符串的左右都有空格。

如果一行包含DownloadedABC,则匹配行的正确正则表达式是什么?

我要匹配 ABC 的最大问题是左侧的斜线或下划线。

我尝试了以下表达式:

'\bDownloaded\b + \b/A/ABC\b | \/ABC\b'

但是我没有收到匹配的行。也许有人可以轻松解决我的尝试。谢谢!

/A/A_ 只是示例。可能有任何其他字母或多个字母。我只需要知道线路中是否有 ABC。

要明确:我检查了几个other posts,它们与我的问题很接近,但最终无法解决我的问题。

【问题讨论】:

  • 应该按这个顺序排列吗?
  • 通常使用前瞻:'^(?=.*/A/ABC\b)(?=.*\bA_ABC\b)(?=.*\bDownloaded\b)',如果您想以任何顺序检查字符串中的字符串。不要在/ 之前添加\b,除非您希望仅在字母、数字或_ 之后匹配。
  • 伙计们请检查我的编辑,我解释我的问题有点错误。对不起!
  • 如果Downloaded 后跟另外两个,则使用\bDownloaded\b.*(?:/A/ABC|\bA_ABC)\b'。请添加您要匹配的示例并避免匹配。
  • @Thefourthbird 请发布答案,我不确定,但仍然是 OP 需要的。

标签: regex powershell powershell-3.0


【解决方案1】:

您可以使用积极的前瞻并断言单词Downloaded,然后匹配字符串中的ABC

^(?=.*\bDownloaded\b).*ABC.*$

Regex demo

这将匹配:

  • ^断言字符串的开始
  • (?=.*\bDownloaded\b)肯定lookahead,断言后面是单词边界之间的Downloaded
  • .*ABC.* 匹配任意字符 0+ 次,然后 ABC 后跟任意字符 0+ 次
  • $ 断言字符串结束

【讨论】:

    猜你喜欢
    • 2020-10-28
    • 2012-07-30
    • 2012-11-22
    • 1970-01-01
    • 2021-11-13
    • 1970-01-01
    • 2013-05-15
    相关资源
    最近更新 更多