【发布时间】:2016-03-21 09:49:25
【问题描述】:
我想使用正则表达式扫描这行文本。
axhaweacb
我想将文本从“a”转换为“b”。这是我目前的模式:
pattern = "a.*?b";
当前输出是:axhaweacb(它包含 a 和 b 之间的所有内容),但我想要返回的是“acb”。
为什么你会问?我试图应用的逻辑/正则表达式是:
当您找到第一次出现“from”正则表达式(“a”)时,开始扫描。如果您发现另一个“发件人”字母出现而没有找到字母的“最后一个”出现 - 在本例中为“b”,请删除前一个字符串 - 这是axh,以便字符串变为:aweacb。如果您发现另一个出现的“来自” - 在这种情况下是 a,而没有找到“到” - b。删除之前的字符串,使其变为acb。然后重新开始扫描。在这种情况下,我们找到了我们的模式 - a 到 b,没有另一个“a”挡住我们的路。
我知道我可以从字符串开始,并删除所有内容,直到最后一次出现“a” - 但我也想将它重用于不同的字符串。在这种情况下,它总是会在最后一次出现之前对所有内容进行子串化 - 这会导致删除大量数据。
我希望我把我的问题/问题说清楚了。如果没有,请告诉我,我会尽力澄清我的问题。
谢谢。
【问题讨论】:
-
你知道你的字符串总是3个字符长吗?在这种情况下,您似乎可以使用模式
"a.b"。我不知道它是否可以推广到你的其他字符串,但你可以考虑一下。
标签: java regex string computer-science