2015-11-06 87 views
-3

我正在寻找一个正则表达式,它可以在分隔符后删除文本并删除分隔符。
我试过.*&删除&后的文字。这是行得通的,但我想从我的字符串中删除&正则表达式删除分隔符和分隔符后的文本

&,我有多个其他分隔e.g , ; \/- | (JT)

我怎样才能做到这一点?

+2

这有点含糊 - 你可以发布更多的输入字符串和期望的输出的例子吗?例如,在正确找到第一个分隔符后,正则表达式是否应该删除所有内容?每行或整个字符串?它应该平等对待所有分隔符吗? –

+0

示例:名字和姓氏 预期输出=名字 – uttara

+0

所有其他分隔符如何? (JT)'是什么样的分离器?请编辑您的帖子并添加几个例子。使用Ctrl-K将它们缩进4个空格,这样它们将被格式化为“原始文本”。 –

回答

0

随着.*&你匹配的文字,直到并包括最后&在您的文字。如果你不希望包括在比赛中,把它放在一个positive lookahead assertion

.*(?=&) 

要查找不止一个分隔符,使用alternationcharacter class

.*(?=[&,;\\/|-]|\(JT\)) 

注意,这将改变像

First, Middle & Last 

First, Middle 

因为比赛停止之前最后分隔符。如果你想让它停在第一分离器,使用一个懒惰的quantifier

.*?(?=[&,;\\/|-]|\(JT\)) 

请注意,您将需要避免的字符串处理器的反斜杠,使正则表达式,作为字符串写入,会看像

".*?(?=[&,;\\\\/|-]|\\(JT\\))" 
+0

谢谢您的回复。 – uttara

+0

谢谢你的回复。我尝试了你提供的正则表达式。我提供的输入是名字(JT)姓氏和我得到的输出是**名字,**其中预期的输出是“名字”。 – uttara

+0

您是否应该删除名字后的空格?那么你不应该使用'“(JT)”'作为分隔符,而是使用“(JT)”'。只需在希望匹配的正则表达式中添加空格即可。 –