小编shm*_*mee的帖子

为什么^\s*$与MULTILINE不匹配?"

我支持这个Java应用程序,其中开发人员基于RegEx实现了一些过滤.为了尽可能通用,他们使用MULTILINE标志编译模式.

前几天我发现了一些意外的事情.在Java中,模式与MULTILINE标志"^\\s*$"不匹配"".它没有那个标志就匹配了.

Pattern pattern = Pattern.compile("^\\s*$", Pattern.MULTILINE);
Matcher matcher = pattern.matcher("");

System.out.println("Multiline: "+matcher.find());

pattern = Pattern.compile("^\\s*$");
matcher = pattern.matcher("");

System.out.println("No-multiline: "+matcher.find());
Run Code Online (Sandbox Code Playgroud)

这会产生以下输出

Multiline: false
Non-Multiline: true
Run Code Online (Sandbox Code Playgroud)

可以看到相同的结果matches():

System.out.println("Multiline: " + ("".matches("(?m)^\\s*$")));
System.out.println("No-multiline: " + ("".matches("^\\s*$")));
Run Code Online (Sandbox Code Playgroud)

我希望所有案例都能匹配.
在Python中,情况就是这样.这个:

import re

print(re.search(r'^\s*$', "", re.MULTILINE))
print(re.search(r'^\s*$', ""))
Run Code Online (Sandbox Code Playgroud)

得到:

<_sre.SRE_Match object; span=(0, 0), match=''>
<_sre.SRE_Match object; span=(0, 0), match=''>
Run Code Online (Sandbox Code Playgroud)

在Perl中,两个案例都匹配,我想我记得它与PHP相同.

如果有人能解释Java处理这种情况的原因,我真的很感激.

java regex

5
推荐指数
1
解决办法
973
查看次数

如何启用表格的右键单击宏?

我有以下代码,适用于普通工作表,但是当我尝试右键单击表格时,宏不会出现。

我已尝试以下操作,但在第一行收到“需要对象”错误消息:

With ContextMenuListRange.Controls.Add(Type:=msoControlButton, before:=2)
    .OnAction = "'" & ThisWorkbook.Name & "'!" & "macro"
    .Caption = "macro"
    .Tag = "My_Cell_Control_Tag"
End With
Run Code Online (Sandbox Code Playgroud)

下面的内容适用于普通工作表。

With ContextMenu.Controls.Add(Type:=msoControlButton, before:=2)
    .OnAction = "'" & ThisWorkbook.Name & "'!" & "macro"
    .Caption = "macro"
    .Tag = "My_Cell_Control_Tag"
End With
Run Code Online (Sandbox Code Playgroud)

右键单击表格时如何显示?

excel vba

2
推荐指数
1
解决办法
1148
查看次数

标签 统计

excel ×1

java ×1

regex ×1

vba ×1