EDA365电子工程师网

标题: 如何查找带“.”的元字符呢? [打印本页]

作者: yneda    时间: 2012-8-14 16:19
标题: 如何查找带“.”的元字符呢?
本帖最后由 yneda 于 2012-8-14 16:21 编辑

我做字符串查找匹配的时候,发现如果匹配字符串本身带有“.”会出错,做不到allegro自带的那个查找功能样子。请问下,“.”换成“\.”行不行呢?但按字面意思,是忽略这个“.”如果就是要查找这个“.”呢,求指点下,谢谢!

;code

when( input_net_len == 0
      axlFormListDeleteAll(my_find_form "input_net_name_field")
      axlFormSetField(my_find_form "input_net_name_field" "*")
      filterd_net_list = nets_list
      )
when( input_net_len > 0
      regex = ""
      for( i 1 input_net_len
            item_char = substring(input_net_name_field i 1)
            when(item_char == "*"  item_char = ".*" )
             regex = sprintf(nil "%s%s" regex  item_char)
            )
       regex = sprintf(nil "%s%s%s" "^" regex "$")
      filterd_net_list = rexMatchList(regex nets_list)
      )






      

作者: betamelody    时间: 2012-8-14 16:27
目前skill的正则表达式中"."用来匹配任意单个字符

以下代码希望可以帮到你
  1. Skill > rexMatchp("[.]" "abc.123")
  2. t
  3. Skill > rexMatchp("[.]" "abc123")
  4. nil
复制代码

作者: yneda    时间: 2012-8-14 16:39
本帖最后由 yneda 于 2012-8-14 16:40 编辑

版主在线,回复神速,多谢了!
也就是我在我的代码:
when(item_char == "*"  item_char = ".*" )后面插入一行
when(item_char == "."  item_char = "[.]" )就可以是吧?,我刚才想到如改成这样行不行呢,有什么不同
when(item_char == "."  item_char = "\\." )
谢谢!



作者: yneda    时间: 2012-8-14 16:41
我在调试的时候发现,改成when(item_char == "."  item_char = "\\." ),如果网络名是:5.5V,也可以找到了。

作者: betamelody    时间: 2012-8-14 16:59
没有什么不同,在中括号内的就表示匹配这个字符或字符范围,在中括号之外的字符可能作为指代之用




欢迎光临 EDA365电子工程师网 (https://bbs.elecnest.cn/) Powered by Discuz! X3.2