Java 用于捕获行与行之间连字符的单词和非连字符的单词的正则表达式

Java 用于捕获行与行之间连字符的单词和非连字符的单词的正则表达式,java,regex,match,capture,Java,Regex,Match,Capture,我试图用java编写一个正则表达式,它匹配单词和连字符单词。到目前为止,我已经: Pattern p1 = Pattern.compile("\\w+(?:-\\w+)",Pattern.CASE_INSENSITIVE); Pattern p2 = Pattern.compile("[a-zA-Z0-9]+",Pattern.CASE_INSENSITIVE); Pattern p3 = Pattern.compile("(?<=\\s)[\\w]+-$",Pattern.CASE_IN

我试图用java编写一个正则表达式,它匹配单词和连字符单词。到目前为止,我已经:

Pattern p1 = Pattern.compile("\\w+(?:-\\w+)",Pattern.CASE_INSENSITIVE);
Pattern p2 = Pattern.compile("[a-zA-Z0-9]+",Pattern.CASE_INSENSITIVE);
Pattern p3 = Pattern.compile("(?<=\\s)[\\w]+-$",Pattern.CASE_INSENSITIVE | Pattern.DOTALL);
Pattern p1=Pattern.compile(“\\w+(?:-\\w+”,Pattern.CASE不区分大小写);
模式p2=模式.compile(“[a-zA-Z0-9]+”,模式.不区分大小写);
模式p3=模式。编译((?)?
\p{L}+(?:-\n?\p{L}+)*
\   /^\ /^\ /\   /^^^
\ / | | | |  \ / |||
|| | | | | | ``上一个可以重复0次或更多次(一组文字“-”、可选新行和一个或多个任意字母(大写/小写))
|| | | | | `——结束第一个非捕获组
|| | | | `——匹配一个或多个前一个字母(任意字母,大写/小写)
|| | | | `——匹配任意字母(大写/小写)
|| | |`----匹配一个新行(可选,因为“?”)
|| | `----文字'-'
||`------------启动第一个非捕获组
|`---------匹配一个或多个上一个字母(A-Z之间的任何字母(大写/小写))
`-------------------匹配任意字母(大写/小写)

\p{L}+(?:-\n?\p{L}+)* \ /^\ /^\ /\ /^^^ \ / | | | | \ / ||| || | | | | | ``上一个可以重复0次或更多次(一组文字“-”、可选新行和一个或多个任意字母(大写/小写)) || | | | | `——结束第一个非捕获组 || | | | `——匹配一个或多个前一个字母(任意字母,大写/小写) || | | | `——匹配任意字母(大写/小写) || | |`----匹配一个新行(可选,因为“?”) || | `----文字'-' ||`------------启动第一个非捕获组 |`---------匹配一个或多个上一个字母(A-Z之间的任何字母(大写/小写)) `-------------------匹配任意字母(大写/小写) 我会选择正则表达式:

\p{L}+(?:\-\p{L}+)*
此类正则表达式还应匹配单词“fiancé”、“À-la carte”和其他包含一些特殊类别“字母”字符的单词。
\p{L}
匹配类别“字母”中的单个代码点。

我将使用正则表达式:

\p{L}+(?:\-\p{L}+)*

此类正则表达式还应匹配单词“fiancé”、“À-la carte”和包含某些特殊类别“字母”字符的其他单词。
\p{L}
匹配类别“字母”中的单个代码点“

所以您想匹配单词,包括连字符和不连字符?但不匹配标点或数字?而且您的测试用例的预期/期望结果也会很有用。我不太清楚“行间连字符”的含义。”。所以您希望匹配单词,包括连字符和不连字符?但不匹配标点或数字?而且您的测试用例的预期/期望结果也会很有用。我不太清楚“行间连字符”的含义.这是自动生成的吗?如果是的话,这是从哪里来的?对于在两行之间分割的单词呢?在我的测试用例中,go to在两行之间分割。我有这个(基本上)正如我问题中的p1减去最后的?没有意识到它应该是有效的。更新了正则表达式以反映请求的更改。这是自动生成的吗?如果是,这是从哪里来的?对于行之间拆分的单词呢?在我的测试用例中,go-to在两行之间拆分。我确实有(基本上)这样的功能正如我问题中的p1减去最后的?一样。没有意识到它应该是有效的。更新了正则表达式以反映请求的更改。 go- to \p{L}+(?:-\n?\p{L}+)* \ /^\ /^\ /\ /^^^ \ / | | | | \ / ||| | | | | | | ||`- Previous can repeat 0 or more times (group of literal '-', optional new-line and one or more of any letter (upper/lower case)) | | | | | | |`-- End first non-capture group | | | | | | `--- Match one or more of previous (any letter, upper/lower case) | | | | | `------ Match any letter (upper/lower case) | | | | `---------- Match a single new-line (optional because of `?`) | | | `------------ Literal '-' | | `-------------- Start first non-capture group | `---------------- Match one or more of previous (any letter between A-Z (upper/lower case)) `------------------- Match any letter (upper/lower case)
\p{L}+(?:\-\p{L}+)*