用绳子
Test=Hello World #Some more text
Test=Hello World
我需要捕获“测试”组和“Hello World”组。如果字符串以“#”开头,则根本不应捕获它。
以下表达式分别适用于第一个和第二个字符串:
^((?!#).+)(?:=)(.+[\S])(?:[\s]*[#])
^((?!#).+)(?:=)(.+[\S])
我试着做一些
^((?!#).+)(?:=)(.+[\S])(?:[\s]*[#])|(?:.*)
但却无法正确计算。
更多细节
背景:这是在C#(.NET Framework 4.0)中完成的。正在逐行读取文件。均衡器符号左侧的文本表示变量名称,均衡器符号右侧的文本表示变量的值。此文件正在用作配置文件。
一般情况:
注意:所有尾随空格-不应捕获最后一个非空格字符结尾后的任何空格。这还包括第二组的末尾和磅符号之间的任何空格。
1)所有字符,除了空格,后面紧跟着一个均衡符号,后面紧跟着一组字符,后面跟着一个空格和一个磅符号。
this=is valid #text
s0_is=this #text
and=th.is #text
the=characters after the # Pound sign are irrelevant
2) 情况与案例1完全相同,只是第二个捕获组和磅号之间没有尾随空格。例如
this=is valid#text
s0_is=this#text
and=th.is#text
the=characters after the# Pound sign are irrelevant
3) 与案例一和案例二相同的情况;但是,如果根本没有#符号(请参见上面关于尾随空格的注释)。例如
this=is valid
s0_is=this
and=th.is
the=characters after the
对于这三种情况,捕获组应分别如下所示(用|符号区分捕获组):
this|is valid
s0_is|this
and|th.is
the|characters after the
特殊情况:
1)该行的第一个字符是#符号。这应该不会导致捕获任何内容。
2) #符号出现在=符号之后。这将导致第二个捕获组为空。
3)#符号出现在上面没有明确说明的任何其他地方。这应该会导致没有捕获任何内容。
4)新行的第一个字符前面不应该有空格;但是,这种情况实际上不太可能发生。
5) 均衡器符号后面的空格无效。
无效案例(不应该捕获任何内容):
th is=is not valid#text
nor =this#text
or_this=something
also= this
^((?!#).+)(?:=)(.+[\S])(?:[\s]*[#])|(?:.*)
意思是匹配
^((?!#).+)(?:=)(.+[\S])(?:[\s]*[#])
或
(?:.*)
试试这个
^((?!#).+)(?:=)(.+[\S])(?:(?:[\s]*[#])|(?:.*))
虽然(?:.*)
看起来有点毫无意义,但你为什么不试试这样的东西呢:
^((?!#).+)(?:=)(.+?\S)(?:\s*[#])?
这将有选择地匹配最后一组,这是我认为您正在尝试的,在这种情况下,这将是更好的选择。
我怀疑你让这变得更加困难。试试这个正则表达式:
^(\w+)=([^\s#]+(?:[ \t]+[^\s#]+)+)
我使用了[\t]
而不是\s
来防止它匹配换行符并溢出到下一行——当然,假设输入确实是多行的。如果喜欢的话,您仍然可以将其应用于独立字符串。
编辑:为了回答您的评论,请尝试以下正则表达式:
^(\w+)=(\w+(?:[ \t]+\w+)*)
在第一个正则表达式中,我试图避免做出狭隘的假设,我有点得意忘形。如您所见,如果您可以对所有单词使用\w
,它会变得容易得多。
本文主要介绍app.cfg这个文件的配置及一些参数的解释 kplcloud启动时必须传app.cfg文件,所有的参数都通过该文件进行控制,若您是在kubernetes进行部署可以考虑通过ConfigMap的方式挂载进容器里。 [server] 应用配置 字段 备注 其他 http_static 静态文件路径 ./static/ http_proxy 代理服务地址 如果您的环境是隔离的,又需要访问外
C语言面向对象编程(六):配置文件解析 在实际项目中,经常会把软件的某些选项写入配置文件。 Windows 平台上的 INI 文件格式简单易用,本篇文章利用《C语言面向对象编程(五):单链表实现》中实现的单链表,设计了一个“类” ini_parser 来读写 INI 格式的配置文件。 struct ini_parser 可以解析 INI 格式的字符串、文件,也可以将内存中的符合 INI 格式的数据
这是一个用来解析文件的库,它的设计思路来自于 database/sql,目前支持解析的文件格式有 ini、json、xml、yaml,可以通过如下方式进行安装: go get github.com/astaxie/beego/config 如果你使用xml 或者 yaml 驱动就需要手工安装引入包 go get -u github.com/astaxie/beego/config/xml 而且
我正在Intellij中创建一个Spring MVC项目,当我创建类时,Intellij无法识别注释,它会出现“无法解决符号”错误。即使我使用了“导入org.springframework.context.annotation.配置”,但它也无法识别“springFramework”。有人能帮我吗? 这是我的pom。xml
我有几个用于Eclipse的文件(我使用的是Eclipse Oxyox),下面是一个示例 请注意,我正在使用变量,以便使其可用于任何项目。 我试图将我为项目启用的概要文件“注入”到通用的启动概要文件配置中,类似于变量,但与当前的Maven概要文件相关。 如果不能这样做,我需要为每个环境创建一个启动配置文件,这意味着每个目标要启动3个文件。 是否有一种方法可以使用/创建一个Eclipse变量,该变量
本文向大家介绍Mybatis中的config.xml配置文件详细解析,包括了Mybatis中的config.xml配置文件详细解析的使用技巧和注意事项,需要的朋友参考一下 经过前面的文章,我觉得对Mybatis的正题理解已经足够了,但是对Mybatis的使用,我觉得还是会有一点的模糊,就我个人而言,我觉得掌握好Mybatis框架,主要要明白三个文件,第一个就是等下要谈论的Mybatis-comfi