Regex 一种正则表达式,用于排除用户输入答案开头和结尾的单词或字符
目标:Regex 一种正则表达式,用于排除用户输入答案开头和结尾的单词或字符,regex,dart,Regex,Dart,目标: bool checkAnswer(String answer) { List _answers = widget.answers; for (var i = 0; i < _answers.length; ++i) { // This _correctAnswer = RegExp("?!(the)|(an)|(a)?${widget.answers[i]}s?").hasMatch(answer); if
bool checkAnswer(String answer) {
List _answers = widget.answers;
for (var i = 0; i < _answers.length; ++i) {
// This
_correctAnswer = RegExp("?!(the)|(an)|(a)?${widget.answers[i]}s?").hasMatch(answer);
if (_correctAnswer) {
return _correctAnswer;
}
}
return false;
}
我有一个回答框,可以接受用户的输入。为了减少我在后端输入的可能正确答案的数量,我想使用RegExp忽略答案开头和结尾的某些单词/字符
如果答案是:山。
我也会接受:山或山或山
我尝试过的:
bool checkAnswer(String answer) {
List _answers = widget.answers;
for (var i = 0; i < _answers.length; ++i) {
// This
_correctAnswer = RegExp("?!(the)|(an)|(a)?${widget.answers[i]}s?").hasMatch(answer);
if (_correctAnswer) {
return _correctAnswer;
}
}
return false;
}
bool检查应答(字符串应答){
列表_answers=widget.answers;
对于(变量i=0;i<\u.length;++i){
//这个
_correctAnswer=RegExp(“?!(the)|(an)|(a)?${widget.answers[i]}s?”).hasMatch(answer);
如果(正确答案){
返回正确答案;
}
}
返回false;
}
此函数查看用户输入,并将其与我在后端输入的答案进行比较。问题是它还接受单个字符“t、h、e”…等,因此您希望删除前导的
“a”或“a”
,以及尾随的复数“s”
也许:
bool检查答案(字符串答案,列出有效答案){
对于(变量i=0;i
这将检查字符串是否为有效答案之一,可选前缀为the
、a
或an
,可选后缀为s
前导的^
和尾随的$
(\$
,因为它是非原始字符串文本)确保regexp匹配整个输入(^
匹配字符串的开头,$
匹配字符串的结尾)。|
与前面的内容或后面的内容匹配(“备选方案”)
如果要匹配更多不同的后缀,请说“es”或“.”,您可以更改s?
也接受这些后缀:
var re=RegExp(“^(?:an?)${validAnswers[i]}(?:e?s?\\\.?\$”,区分大小写:false);
我猜你想接受s
或es
,并且独立于此,接受
您原来的RegExp
无效。如果它真的运行了,我无法预测它会做什么。(例如,RegExp
不能以?
开头)。
我建议阅读RegExp教程。这就是我解决问题的方法:
开始时忽略:the,an,a
在结尾处忽略:s、es和。
bool checkAnswer(String answer) {
List _answers = widget.answers;
for (var i = 0; i < _answers.length; i++) {
var re = RegExp("^(?:the |an |a )?${_answers[i]}(?:s|es)?.?\$", caseSensitive: false);
if (re.hasMatch(answer)) return true;
}
return false;
}
bool检查应答(字符串应答){
列表_answers=widget.answers;
对于(变量i=0;i<\u answers.length;i++){
var re=RegExp(“^(?:the | an | a)${{u answers[i]}(?:s | es).?\$”,区分大小写:false);
if(关于hasMatch(答案))返回true;
}
返回false;
}
感谢您抽出时间提供答案。但是,您能否提供以下方面的详细信息:1。这些符号在做什么??:和^和^以及2美元。我怎么也会忽略:es和。(句号)最后呢?3.为什么您创建了_removeExtrasRE,但没有使用它?4.如何接受“a”或“an”作为答案而不是“n”谢谢:)我无法让上面的代码工作。以上仅接受包含“The”或“an”抱歉的答案,在第一组之后缺少?
,并且不需要\u removeExtrasRE
(这是在最后一分钟重写时发生的情况)