java正则表达式提取到特殊字符
如果我有一行,它的结尾可能是几个字符,例如。或(或{或;如何仅提取文本1) 更新:文本1之前有文本0,特殊字符可能存在,也可能不存在 更新2java正则表达式提取到特殊字符,java,regex,Java,Regex,如果我有一行,它的结尾可能是几个字符,例如。或(或{或;如何仅提取文本1) 更新:文本1之前有文本0,特殊字符可能存在,也可能不存在 更新2 String str = "Text0TEXT1.more text "; String str = "Text0TEXT1(more text "; String str = "Text0TEXT1{more text "; 我需要提取“我想要的文本”,但我会将其余文本提取到最后。特殊字符为。({: 这将匹配从行首开始的所有连续[a-zA-Z_0-9]
String str = "Text0TEXT1.more text ";
String str = "Text0TEXT1(more text ";
String str = "Text0TEXT1{more text ";
我需要提取“我想要的文本”,但我会将其余文本提取到最后。特殊字符为。({:
这将匹配从行首开始的所有连续[a-zA-Z_0-9]字符和空格
str.split("[^\\w\\s]+")[0]
那么:
input: [TEXT1.more text ], first word: TEXT1
input: [TEXT1)more text ], first word: TEXT1
input: [TEXT1}more text ], first word: TEXT1
input: [Beginning text Text I want . Text I don't want], first word: Beginning text Text I want
input: [Beginning text with numbers Text I want ( Text I don't want )], first word: Beginning text with numbers Text I want
input: [Beginning text with numbers Text I want { Text I don't want }], first word: Beginning text with numbers Text I want
您想要的文本在组1中
说明:
^(?:[a-zA-Z ]+[0-9]+ )?([a-zA-Z ,]+)
我设置了一个简单的示例,通过使用正向前瞻匹配正则表达式来解决正则表达式:
^ : begining of string
(?: : start non capture group
[a-zA-Z ]+ : one or more letter or space
[0-9]+ : one or more digit
: a space
)? : end of group optional
( : start capture group 1
[a-zA-Z ,]+ : one or more letter, sapce or coma
) : end of group
上面的正则表达式将提取特殊字符之前的部分
编辑:
对于TEXT0部分,是否有特定的模式?您可以使用包含这些字符的编译模式进行拆分。关于您的编辑,您是希望返回
Text0TEXT1
,还是仍然只返回TEXT1
?您是否试图在特殊字符之前提取第一个ALLCAPS单词,后跟一位数字?我很抱歉这些都不是实际的例子,因为找到TEXT1太容易了。你能给我们一些你想要的实际例子吗?什么是特殊字符,什么不是?给我们一些真实的例子。这将删除str的最后一部分,但我想要的文本可以包含,also@tnaser:只需将允许的字符添加到char类。请参阅我的编辑。听起来不错。我没有完全理解它。第一部分将接受任何char,期望什么?如何提取我想要的文本?它包含类似“text 1 text I want”或“text 1 text needed”的模式@tnaser:很抱歉回答晚了,请参阅我的编辑以了解regexNo的解释。它可以是任何文本,文本1有特殊的模式。它以“Text1 text I need”开头
^(?:[a-zA-Z ]+[0-9]+ )?([a-zA-Z ,]+)
^ : begining of string
(?: : start non capture group
[a-zA-Z ]+ : one or more letter or space
[0-9]+ : one or more digit
: a space
)? : end of group optional
( : start capture group 1
[a-zA-Z ,]+ : one or more letter, sapce or coma
) : end of group
[\w ]+(?=[.{(;])