Java中的正则表达式:匹配组直到第一个符号出现

Vit*_*liy 5 java regex

我的字符串看起来像这样:

"Chitkara DK, Rawat DJY, Talley N. The epidemiology of childhood recurrent abdominal pain in Western countries: a systematic review. Am J Gastroenterol. 2005;100(8):1868-75. DOI."
Run Code Online (Sandbox Code Playgroud)

我想要的是获得大写字母(仅作为单独的单词)直到第一个点,得到:DK DJY N.但是之后不是其他人物,比如J DOI.

这是我的Java类Pattern的代码部分:

\\b[A-Z]{1,3}\\b
Run Code Online (Sandbox Code Playgroud)

正则表达式中是否有一般选项可以在某些字符后停止匹配?

Seb*_*ske 5

您可以使用contionous匹配\G并从第一个捕获组中提取所需的匹配:

(?:\\G|^)[^.]+?\\b([A-Z]{1,3})\\b
Run Code Online (Sandbox Code Playgroud)

您需要使用该MULTILINE标志在多行上下文中使用它.如果您的内容始终是一行,则可能会|^从您的模式中删除.

请参阅https://regex101.com/r/JXIu21/3

请注意,regex101使用PCRE模式,但所有使用的功能也可用于Java正则表达式.