C中的Java matchesAt()等价物#
我已经发现了这个问题,但是在那里寻找的指定答案似乎不起作用 我能找到的所有方法似乎都表明C中的Java matchesAt()等价物#,java,c#,.net,regex,Java,C#,.net,Regex,我已经发现了这个问题,但是在那里寻找的指定答案似乎不起作用 我能找到的所有方法似乎都表明lookingAt()方法从“region”的开头开始匹配(尽管还不清楚“region”是否与“string”同义) 我在Java和.NET中都有一组测试示例,但得到的结果不同 JAVA @测试 公共void TestRegex() { 字符串输入=”자\uD83E在Java中,您需要使用模式.COMMENTS标志来允许正则表达式中的注释和任意空格: String regex = "(?x). () [\uD
lookingAt()
方法从“region”的开头开始匹配(尽管还不清楚“region”是否与“string”同义)
我在Java和.NET中都有一组测试示例,但得到的结果不同
JAVA
@测试
公共void TestRegex()
{
字符串输入=”자\uD83E在Java中,您需要使用模式.COMMENTS
标志来允许正则表达式中的注释和任意空格:
String regex = "(?x). () [\uD800-\uDFFF]";
Pattern pattern = Pattern.compile(regex);
您还可以在regex的开头使用(?x)
,以获得相同的效果:
String regex = @"\A. () [\uD800-\uDFFF]";
现在匹配
将显示Java代码的true
现在,要使.NET
regex等效于Java的lookngAt()
,只需使用start-anchor:
请注意,您在输入字符串中使用的是锚点,而不是正则表达式。Hmm…因此,如果没有锚点,我需要一个文本空格字符,就像在.NET中没有RegexOptions.IgnorePatternWhitespace一样?是的。Java
的Pattern.COMMENTS
与RegexOptions.IgnorePatternWhitespace>非常接近
不适用于.NET
(除了Java标志也允许在正则表达式中使用注释)所以,当我把测试放在一起时,我看起来像是搞错了——我在原始代码中的正则表达式中有锚。但我也假设,因为正则表达式中有空格,Java会忽略它们,这就是我出错的地方。对,Java正则表达式不会忽略空格,除非你有模式。注释或(?x)
在正则表达式的开头
String regex = @"\A. () [\uD800-\uDFFF]";