Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java正则表达式提取到特殊字符_Java_Regex - Fatal编程技术网

java正则表达式提取到特殊字符

java正则表达式提取到特殊字符,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]

如果我有一行,它的结尾可能是几个字符,例如。或(或{或;如何仅提取文本1)

更新:文本1之前有文本0,特殊字符可能存在,也可能不存在

更新2

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 ]+(?=[.{(;])