Java和C#Regex不产生相同的结果
我有一个正则表达式的一部分,我正试图用它把句子分成单词。作为本文的一部分,我想将诸如“word.”之类的模式拆分为“word”、“.”。为此,我对标点符号使用正向前视,对空格字符使用反向后视 在Java中,以下代码实现了这一点:Java和C#Regex不产生相同的结果,java,c#,regex,Java,C#,Regex,我有一个正则表达式的一部分,我正试图用它把句子分成单词。作为本文的一部分,我想将诸如“word.”之类的模式拆分为“word”、“.”。为此,我对标点符号使用正向前视,对空格字符使用反向后视 在Java中,以下代码实现了这一点: Pattern test = Pattern.compile("(?=[\\p{P}&&[^']])(?<!\\s)"); test.split("word."); // returns ["word", "."] Pattern test=Pa
Pattern test = Pattern.compile("(?=[\\p{P}&&[^']])(?<!\\s)");
test.split("word."); // returns ["word", "."]
Pattern test=Pattern.compile((?=[\\p{p}&&[^']])(?这是Java特有的正则表达式语法,在.NET中不起作用
但是,我认为您应该能够在.NET中以更简单的方式重写它,如下所示:
@"(?=[^'\P{P}])(?<!\s)"
@(?=[^'\P{P}])(?这是Java特有的正则表达式语法,在.NET中不起作用
但是,我认为您应该能够在.NET中以更简单的方式重写它,如下所示:
@"(?=[^'\P{P}])(?<!\s)"
(?=[^'\P{P}])(?你为什么期望它以同样的方式运行?Java实现一定是错误的。@ScottHannen:这只是regex的一种不同风格。对。我期望Java和C#regex是相似的,但并非在所有情况下都完全相同。在这种情况下,我不容易找到它们不同的原因,所以我问了。@Matti:我知道,我只是说了一些stupid。你为什么期望它以同样的方式运行?Java实现一定是错误的。@ScottHannen:这只是regex的一种不同风格。对。我期望Java和C#regex是相似的,但并非在所有情况下都完全相同。在这种情况下,我不容易找到它们不同的原因,所以我问了。@Matti:我知道,我只是说了一些不同的东西tupid。另一种编写方法是(?=[\p{p}-[']])
(只是后面的部分)另一种编写方法是(?=[\p{p}-[']])
(只是后面的部分)