我需要在.
和)
我使用的是:\..*\)
但如果有多个.
,我会收到第一个.
到)
,而不是最后一个.
到)
。
E.g:
abc.def.ghi.jkl.mymodname(Object sender, CompletedEventArgs e)
我得到了:
def.ghi.jkl.mymodname(Object sender, CompletedEventArgs e)
我想:
mymodname(Object sender, CompletedEventArgs e)
任何指针? 正如你所见,我是正则表达式的新手......
答案 0 :(得分:3)
明确。如果您不希望在起始点和右括号之间有任何点,则可以指定:
\.[^.]*\)
[^.]
是否定的character class,意思是“除了点之外的任何字符”。这样,在点之后只允许非点匹配。
如果您不希望前导点成为比赛的一部分(但希望它在比赛开始前出现),您可以使用lookbehind assertion:
(?<=\.)[^.]*\)
这几乎适用于除JavaScript和Ruby之外的所有正则表达式引擎(直到版本1.8),两者都不支持lookbehind。
答案 1 :(得分:0)
尝试.[a-bA-B0-9,(]*)
我没有检查它,但我认为这样的工作
或者你也可以使用somthing
答案 2 :(得分:0)
$a='abc.def.ghi.jkl.mymodname(Object sender, CompletedEventArgs e)';
$p='/.*\.(.*?\))/';
preg_match($p,$a,$m);
现在查看$m[1]
其他语言类似
答案 3 :(得分:0)
听起来你真正想做的就是把所有东西都剥离到最后一个点。
在shell中:
sed 's/.*\.//'
或在PHP中
preg_replace('/^.*\./', '', $foo);
请注意方法中的杂散点。
def.ghi.jkl.mymodname(Object sender, "Some text.", CompletedEventArgs e)
为此,您可能需要:
sed -r 's/.*\.([a-zA-Z]\()/\1/'
或类似的东西。