首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tcl中解析行的正则表达式

Tcl中解析行的正则表达式
EN

Stack Overflow用户
提问于 2016-08-26 22:15:55
回答 2查看 68关注 0票数 0

我需要一个正则表达式来分隔此模式的左侧和右侧部分。。。。。:例如:

代码语言:javascript
复制
Media State . . . . . . . . . . . : Media disconnected
   Connection-specific DNS Suffix  . : alumnus.co.in
   Description . . . . . . . . . . . : Microsoft ISATAP Adapter
   Physical Address. . . . . . . . . : 00-00-00-00-00-00-00-E0
   DHCP Enabled. . . . . . . . . . . : No
   Autoconfiguration Enabled . . . . : Yes

并将它们存储在两个变量中。我已经写了这个正则表达式

代码语言:javascript
复制
regexp {([[a-z]*[0-9]*.*[0-9]*[a-z]*]*" "):([[a-z]*[0-9]*.*[0-9]*[a-z]*]*)} 6*rag5hu. . :4ku5-1a543m match a b 

但它不起作用。任何帮助都将不胜感激。

EN

回答 2

Stack Overflow用户

发布于 2016-08-26 22:41:58

我会这样做:

代码语言:javascript
复制
set text {Media State . . . . . . . . . . . : Media disconnected
   Connection-specific DNS Suffix  . : alumnus.co.in
   Description . . . . . . . . . . . : Microsoft ISATAP Adapter
   Physical Address. . . . . . . . . : 00-00-00-00-00-00-00-E0
   DHCP Enabled. . . . . . . . . . . : No
   Autoconfiguration Enabled . . . . : Yes}

foreach line [split $text \n] {
    if {[regexp {^(.+?)(?: \.)+ : (.+)$} $line -> name value]} {
        puts "$name => $value"
    }
}

输出

代码语言:javascript
复制
Media State => Media disconnected
   Connection-specific DNS Suffix  => alumnus.co.in
   Description => Microsoft ISATAP Adapter
   Physical Address. => 00-00-00-00-00-00-00-E0
   DHCP Enabled. => No
   Autoconfiguration Enabled => Yes

这使用了一个非贪婪的量词(+?),这使得正则表达式中的每个量词都是非贪婪的。然后,您需要锚点,以便您想要捕获的位包含所需的所有文本。

票数 0
EN

Stack Overflow用户

发布于 2016-08-27 03:15:43

借用text的定义

代码语言:javascript
复制
package require textutil

foreach line [split $text \n] {
    lassign [::textutil::splitx [string trim $line] {\s*(?:\. )+:\s*}] a b
    puts "a: $a\nb: $b"
}

给出输出

代码语言:javascript
复制
a: Media State
b: Media disconnected
a: Connection-specific DNS Suffix
b: alumnus.co.in
a: Description
b: Microsoft ISATAP Adapter
a: Physical Address
b: 00-00-00-00-00-00-00-E0
a: DHCP Enabled
b: No
a: Autoconfiguration Enabled
b: Yes

文档:foreachlassignpackageputssplitstringtextutil (package)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39168424

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档