Java 使用正则表达式解析不同的语言环境/语言?

Java 使用正则表达式解析不同的语言环境/语言?,java,regex,Java,Regex,我有一些不同语言的文本。现在,文本以(en-us,又称英语)的形式从客户处返回: 我用正则表达式匹配“Delete Here”并剪掉该行及其下方的所有内容,留下“Stuff Here to keep” “删除此处:”是可以以任何语言返回的文本 -- *\p{L}+ \p{L}+ *-- 因此,意大利语的关键词是“Elimina qui”: 我的正则表达式使用类似这样的东西来匹配“Delete Here”,但是我如何才能让它与其他语言一起工作呢 我是否需要为每个单词组合“Delete”、“Her

我有一些不同语言的文本。现在,文本以(en-us,又称英语)的形式从客户处返回:

我用正则表达式匹配“Delete Here”并剪掉该行及其下方的所有内容,留下“Stuff Here to keep”

“删除此处:”是可以以任何语言返回的文本

-- *\p{L}+ \p{L}+ *--
因此,意大利语的关键词是“Elimina qui”:

我的正则表达式使用类似这样的东西来匹配“Delete Here”,但是我如何才能让它与其他语言一起工作呢

我是否需要为每个单词组合“Delete”、“Here”(这里有更多匹配词)等查找词典,。???如何使此解决方案适用于所有语言

注意:这是一个非常非常简单的例子。“--Delete Here--”只是我必须匹配的一种模式。其他模式可能只是“在此处删除”。还有其他模式,如“删除下面的所有内容” (同样,对于文学语境,我还有其他的文本模式 以多种语言进行匹配)


您可以在正则表达式中使用或

Pattern PATTERN = Pattern.compile("^(.*?)-+ *(?:Delete Here|Elimina qui) *-+", Pattern.DOTALL)

但要小心,如果您有许多(百个)或字符串,从性能的角度来看,这可能是个问题。对于这样的数字,最好创建一个简单的模式来检索“-”s之间的字符串,并使用一个集合来检查它是否是您要查找的字符串

Pattern PATTERN = Pattern.compile("^(.*?)-+ *(?:Delete Here|Elimina qui) *-+", Pattern.DOTALL)

但要小心,如果您有许多(百个)或字符串,从性能的角度来看,这可能是个问题。对于这样的数字,最好创建一个简单的模式来检索“-”s之间的字符串,并使用一个集合来检查它是否是您要查找的字符串

Pattern PATTERN = Pattern.compile("^(.*?)-+ *(?:Delete Here|Elimina qui) *-+", Pattern.DOTALL)

但要小心,如果您有许多(百个)或字符串,从性能的角度来看,这可能是个问题。对于这样的数字,最好创建一个简单的模式来检索“-”s之间的字符串,并使用一个集合来检查它是否是您要查找的字符串

Pattern PATTERN = Pattern.compile("^(.*?)-+ *(?:Delete Here|Elimina qui) *-+", Pattern.DOTALL)

但要小心,如果您有许多(百个)或字符串,从性能的角度来看,这可能是个问题。对于这样的数字,最好创建一个简单的模式来检索“-”s之间的字符串,并使用一个集合来检查它是否是您要查找的字符串

如果数据的其他部分没有连续的破折号,则一种方法是使用一个否定的字符类来匹配这些破折号

另一个可能的选择是使用
\p{L}
,它匹配任何语言的任何类型的字母

-- *\p{L}+ \p{L}+ *--

请参见

如果数据的其他部分没有连续的破折号,一种方法是使用否定字符类来匹配这些破折号

另一个可能的选择是使用
\p{L}
,它匹配任何语言的任何类型的字母

-- *\p{L}+ \p{L}+ *--

请参见

如果数据的其他部分没有连续的破折号,一种方法是使用否定字符类来匹配这些破折号

另一个可能的选择是使用
\p{L}
,它匹配任何语言的任何类型的字母

-- *\p{L}+ \p{L}+ *--

请参见

如果数据的其他部分没有连续的破折号,一种方法是使用否定字符类来匹配这些破折号

另一个可能的选择是使用
\p{L}
,它匹配任何语言的任何类型的字母

-- *\p{L}+ \p{L}+ *--

请参见

是否有应该保留的的任何部分--?如果没有,那么可以尝试
-*[^-]+*-
。问题是我不能总是依赖破折号。这只是一种模式。有些模式不包含破折号,但我必须在其他语言中进行匹配(我在上面做了一些编辑来描述)。是否应该保留
--无论什么--
的任何部分?如果没有,那么可以尝试
-*[^-]+*-
。问题是我不能总是依赖破折号。这只是一种模式。有些模式不包含破折号,但我必须在其他语言中进行匹配(我在上面做了一些编辑来描述)。是否应该保留
--无论什么--
的任何部分?如果没有,那么可以尝试
-*[^-]+*-
。问题是我不能总是依赖破折号。这只是一种模式。有些模式不包含破折号,但我必须在其他语言中进行匹配(我在上面做了一些编辑来描述)。是否应该保留
--无论什么--
的任何部分?如果没有,那么可以尝试
-*[^-]+*-
。问题是我不能总是依赖破折号。这只是一种模式。有些模式不包含破折号,但我必须在其他语言中匹配(我在上面做了一些编辑来描述)。这是一个好主意。然而,破折号并不总是会出现。这只是一种模式。它可以返回为没有破折号的“Delete Here”。这看起来不像是正则表达式的工作,除非你想用所有语言翻译Delete Here并将它们存储在你的表达式中,这对我来说很疯狂。这是个好主意。然而,破折号并不总是会出现。这只是一种模式。它可以返回为没有破折号的“Delete Here”。这看起来不像是正则表达式的工作,除非你想用所有语言翻译Delete Here并将它们存储在你的表达式中,这对我来说很疯狂。这是个好主意。然而,破折号并不总是会出现。这只是一种模式。它可以返回为没有破折号的“Delete Here”。这看起来不像是正则表达式的工作,除非你想用所有语言翻译Delete Here并将它们存储在你的表达式中,这对我来说很疯狂。这是个好主意。然而,破折号并不总是会出现。这只是一种模式。这看起来不像正则表达式的工作,除非你想用所有语言翻译Delete Here并将它们存储在你的表达式中,我觉得这很疯狂。