请阅读代码中的注释。不同的场景......如果任何人能告诉我其他解决方案来实现同样的目标,那就太棒了。 请阅读代码中的注释。不同的场景......如果任何人能告诉我其他解决方案来实现同样的目标,那就太棒了。
package parsexml.matcher;
import java.util.Scanner;
public class BackUp {
// 1. input : if the quantity a < 90 and b > 90 then click on < ok >
// 1. output :if the quantity a less than 90 and b greater than 90 then click on < ok >
// 2.if the quantity a > 90 or a < 90 then click on < submit>
// 2. output : if the quantity a greater than 90 or a less than 90 then click on < submit>
// etc .from 3- 9 , i get the expected output
// 3. if the quantity a> b then click on <submit>
// 4. if the quantity a > b or a < c then click on < submit>
// 5. if the quantity a < 90 then click on <submit>
// 6. if the quantity a > 90 then click on <submit>
// 7. if the quantity a < b then click on <submit>
// 8. if the quantity a > b then click on < submit >
//9. validate a < 100 in the expression and press < click >
// 10. if amount < fd then if price > 80 click on < submit >
public static void main(String[] arg) {
String inputText;
String outputText = "";
String greater = "";
Scanner s = new Scanner(System.in);
inputText = s.nextLine();
if (inputText.contains("<")) {
outputText = inputText.replaceAll("(\\w+)\\s*<\\s*(\\w++(?!\\s*>))", "$1 less than $2");
// System.out.print("\n"+outputText);
}
if (outputText.contains(">")) {
greater = outputText.replaceAll("(\\w+)\\s*>\\s*(\\w++(?!\\s*>))", "$1 greater than $2");
System.out.print("\n" + greater);
}
if (outputText.contains(">"))
return;
else if (inputText.contains(">")) {
String greater2;
greater2 = inputText.replaceAll("(\\w+)\\s*>\\s*(\\w++(?!\\s*>))", "$1 greater than $2");
System.out.print("\n" + greater2);
} else
return;
}
}
答案 0 :(得分:1)
根据您提供的示例,您似乎尝试使用<
替换任何less than
后跟空格(或可能是字符串的结尾):
a.replaceAll("<(?= |$)", "less than");
根据评论进行修改。
如果您要替换任何<
后跟可选空格,请输入数字:
a.replaceAll("<(?=\s*\d)", "less than");
答案 1 :(得分:1)
如果您确定&#34;小于&#34;之前和之后总是有空格。签字,然后这个:
String test = a.replace("<", "less than");
可以替换为:
String test = a.replace(" < ", " less than ");
答案 2 :(得分:1)
假设你可以在<
周围有空白符号,<>
内的子串也可以在里面有空格(比如< play >
),你可以使用
(\w+)\s*<\s*(\w++(?!\s*>))
并替换为$1 less than $2
。正则表达式匹配......
(\w+)
- (第1组)一个或多个字母数字和下划线字符\s*
- 零个或多个空格<
- 文字<
字符(\w++(?!\s*>))
- 一个或多个未跟随可选空格和结束>
的单词字符。 注意 ++
占有量词是非常重要的,因为它会关闭回溯并且只强制在找到{{1>后找到的最后一个字符后运行前瞻}}。请参阅IDEONE demo:
\w++
结果:
String str = " <play> a < b <play> at < button >\n <play> a < 90 <play> at < button >";
System.out.println(str.replaceAll("(\\w+)\\s*<\\s*(\\w++(?!\\s*>))", "$1 less than $2"));
<play> a less than b <play> at < button >
<play> a less than 90 <play> at < button >
使用
greater than
请参阅another demo