【问题标题】:What is the best way to validate a given regex bash?验证给定正则表达式 bash 的最佳方法是什么?
【发布时间】:2022-01-27 05:40:14
【问题描述】:

我正在寻找与 bash 中的以下 Python sn-p 等效的东西:

import re

try:
    re.compile('[')
    is_valid = True
except re.error:
    is_valid = False

【问题讨论】:

  • 有效的在哪里?有很多种口味;所以只需调用一个 Python(或 perl 或..)脚本来大致执行显示的操作,可能使用 stdout 或退出状态。
  • @user2864740 Bash 使用 POSIX 扩展 REs。
  • 更新问题,使其只关注一个问题。 但它已经这样做了吗?我不明白为什么它被关闭了。这是一个非常清晰且重点突出的问题。
  • @Shawn。是的(大部分)。最接近的原因是完全错误的。我可以理解,“需要细节或清晰度”,但这取决于(我猜)OP 是非英语母语人士。我将从评论中投票“编辑并重新打开”。

标签: regex bash


【解决方案1】:

来自bash documentation on [[ and =~

如果字符串与模式匹配,则返回值为 0,否则为 1。如果正则表达式语法错误,则条件表达式的返回值为 2。

这会导致...

#!/usr/bin/env bash

test_re() {
    [[ x =~ $1 ]]
    [[ $? -ne 2 ]]
}

for re in "$@"; do
    if test_re "$re"; then
        printf "%s\n" "$re is valid"
    else
        printf "%s\n" "$re is not valid"
    fi
done

例子:

$ bash demo.sh "[" "[a-z]"
[ is not valid
[a-z] is valid

【讨论】:

    猜你喜欢
    • 2013-04-09
    • 2013-03-16
    • 1970-01-01
    • 2011-08-22
    • 1970-01-01
    • 1970-01-01
    • 2017-01-22
    • 2020-02-09
    • 2013-10-23
    相关资源
    最近更新 更多