正则表达式TCL使用程序

发布于 2024-08-31 01:38:18 字数 260 浏览 3 评论 0原文

我是一名TCL程序员新手。我来了 - 我在 stackoverflow 论坛上发表的第一篇文章。

我想编写一个匹配任何 & 的正则表达式只有字符串以字符 A 开头并以 B 结尾。无论中间的字符是什么,都应该显示。例如 AXIOMB 作为用户的输入,以 A & 开头。以字符 B 结尾。

这是我的尝试,

regexp { (^A([C-Z]+)B$)}

谢谢

I am a novice TCL programmer. Here I go - My 1st post with stackoverflow forum.

I would like to write a regular expression that matches any & only the strings starts with character A and ends with B. Whatever the characters coming inbetween should be displayed. For instance AXIOMB as an input from the user which starts with A & end with character B.

Here is my try

regexp { (^A([C-Z]+)B$)}

Thank you

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

故事未完 2024-09-07 01:38:18

你非常接近:(

set stringToTest "AXIOMB"
set match [regexp {^A([C-Z]*)B$} $stringToTest -> substring]
if {$match} {
    puts "The middle was $substring"
}

-> 实际上是一个不寻常的变量名称。但在这里我使用该符号,因为它看起来比使用其他等效的 someRandomDummyVariable:-))

如果您想从命令行或控制台获取要测试的字符串,请按以下方法操作:

命令行参数(不带 Tcl 解释器或脚本的名称)以列表形式显示在全局 argv 列表变量。第一个是 [lindex $::argv 0]

可以通过 gets 命令从控制台读取一行。

set line [gets stdin]; # you can use other channel names too, of course

请注意,与 C 中不同的是,Tcl 中的 gets 可以有效防止缓冲区溢出,并且 scanf() 的(几乎)全部功能大约相当于 scan [获取标准输入] ...(出于安全原因排除的某些格式除外)。

You're very close:

set stringToTest "AXIOMB"
set match [regexp {^A([C-Z]*)B$} $stringToTest -> substring]
if {$match} {
    puts "The middle was $substring"
}

(The -> is actually an unusual variable name. But here I'm using that symbol because it looks better than using the otherwise-equivalent someRandomDummyVariable. :-))

If you're seeking to get the string to test from the command line or the console, here's how:

Command line arguments (without the name of the Tcl interpreter or the script) are presented as a list in the global argv list variable. The first one is thus [lindex $::argv 0].

A line can be read from the console via the gets command.

set line [gets stdin]; # you can use other channel names too, of course

Note that, unlike in C, gets in Tcl is strongly defended against buffer overflows and the (almost) full power of scanf() is about equivalent to scan [gets stdin] ... (except for some formats excluded for security reasons).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文