我有正则表达式问题,我想我错过了正则表达式的实际工作方式。
我有一些包含方法定义的字符串
但其中一些还包含输出类型:
我想只有像第一个那样的输入:取出输出参数。 我拿出了我的正则表达式帽子,并提出了一些有条件的正则表达式:
(?([:]+)(.+(?=\s:))|(.+))
如果我在我的字符串中匹配一个“:”字符,我会采取“:”之前的任何内容,如果不是我全部采取。 理论上这是正确的,但它返回整行 如果我将正则表达式更改为
(?([:]*)(.+(?=\s:))|(.+))
然后第二种类型的方法被正确地复制,但不是第一种(奇怪的......)。 你能解释一下我的错误在哪里吗?
非常感谢,
答案 0 :(得分:1)
没有必要像这样处理它。只需要接受你遇到的第一个右括号:
/^[^)]*\)/
除非我误解你的问题......
答案 1 :(得分:0)
我不知道你的正则表达式有什么问题。我会使用一个更简单的正则表达式来匹配你想要的东西:
^.*\)
这匹配行的开头,后跟任何字符,后跟)
。 )
之后可能存在文本的事实无关紧要。
答案 2 :(得分:0)
我想出了^(.*?\)).*$
这匹配字符串的开头(^
),后跟任何字符,直到(并包括)第一个右括号(.*?
是任意字符的懒惰匹配,所以它将匹配到第一个)
(\)
需要转义字符串。)行的其余部分被忽略(.*$
) - 让你使用多行选项,否则你会只匹配第一部分。
额外的括号是捕获组,因此您可以使用$ 1作为替换。