如何在TCL中使用proc编写正则表达式来处理以下模式?

如何在TCL中使用proc编写正则表达式来处理以下模式?,tcl,Tcl,我是TCL的新手,正在寻求帮助处理以下表达式。 我从用户处获取I/p字符串,以验证下面的任何字符串&使用过程在CLI中的行中没有其他字符串 { GHI GII GJI GKI} 另一个棘手的问题是编写regexp,只匹配以字母A开头的字符,以字母B结尾的字符,在使用过程的过程中,它还包含1个或多个YO或OY。 谢谢如果这是您的输入,那么真的不需要使用正则表达式:只需检查列表中是否有提供的单词: set input { GHI GII GJI GKI} foreach word {GJI GLI

我是TCL的新手,正在寻求帮助处理以下表达式。 我从用户处获取I/p字符串,以验证下面的任何字符串&使用过程在CLI中的行中没有其他字符串

{ GHI GII GJI GKI}
另一个棘手的问题是编写regexp,只匹配以字母A开头的字符,以字母B结尾的字符,在使用过程的过程中,它还包含1个或多个YO或OY。
谢谢

如果这是您的输入,那么真的不需要使用正则表达式:只需检查列表中是否有提供的单词:

set input { GHI GII GJI GKI}
foreach word {GJI GLI} {
    if {$word in $input} {
        puts "$word is in [list $input]"
    } else {
        puts "$word is not in [list $input]"
    }
}
匹配“以字母A开头,以字母B结尾,中间有1个或多个YO或OY”的正则表达式:

如果你的意思是“要么(1个或多个YO)要么(1个或多个OY),那么正则表达式是

set re {^A(?:(?:YO)+|(?:OY)+)B$}

如果这是您的输入,那么真的不需要使用正则表达式:只需检查提供的单词是否在该列表中:

set input { GHI GII GJI GKI}
foreach word {GJI GLI} {
    if {$word in $input} {
        puts "$word is in [list $input]"
    } else {
        puts "$word is not in [list $input]"
    }
}
匹配“以字母A开头,以字母B结尾,中间有1个或多个YO或OY”的正则表达式:

如果你的意思是“要么(1个或多个YO)要么(1个或多个OY),那么正则表达式是

set re {^A(?:(?:YO)+|(?:OY)+)B$}

您能给出一些传递和非传递输入的示例吗?@RHSeeger IJK GHI MNO GII LOG GJI HLT GKI(用户输入)必须使用regexp匹配字符串模式您能给出一些传递和非传递输入的示例吗?@RHSeeger IJK GHI MNO GII LOG GJI HLT GKI(用户输入)必须使用regexp@Glenn Jackman匹配字符串模式谢谢你,Glenn。实际上,我必须表示为一个过程,从用户那里获取这些字符串作为输入(CLI),并使用单个正则表达式匹配相关的字符串模式示例:模式类似于IJK GHI MNO GII LOG GJI HLT GKI(user I/p@CLI)输出匹配:GHI GII GJI GKI(它过滤IJK MNO LOG HLT)hmm,开始有家庭作业的味道了。因此,给定“CLI”,您必须匹配列表中第一个字符为“C”、第二个字符为“L”或最后一个字符为“I”的单词,对吗?谢谢。“我找到了办法。”格伦·杰克曼谢谢你格伦。实际上,我必须表示为一个过程,从用户那里获取这些字符串作为输入(CLI),并使用单个正则表达式匹配相关的字符串模式示例:模式类似于IJK GHI MNO GII LOG GJI HLT GKI(user I/p@CLI)输出匹配:GHI GII GJI GKI(它过滤IJK MNO LOG HLT)hmm,开始有家庭作业的味道了。因此,给定“CLI”,您必须匹配列表中第一个字符为“C”、第二个字符为“L”或最后一个字符为“I”的单词,对吗?谢谢。我找到了做这件事的方法。