正则表达式
字符串匹配(北航复试上机题)
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
while(~scanf("%d",&n)){
string strs[n];
string str[n];
string s;
for(int i=0;i<n;++i){
cin>>strs[i];
str[i]=strs[i];
transform(strs[i].begin(),strs[i].end(),strs[i].begin(),::tolower);
}
cin>>s;
transform(s.begin(),s.end(),s.begin(),::tolower);
regex e(s);
for(int i=0;i<n;++i){
bool found = regex_match(strs[i], e);
if(found){
cout<<i+1<<" "<<str[i]<<endl;
}
}
}
}
句子中的有效单词数
class Solution {
public:
int countValidWords(string sentence) {
regex pattern("[a-z]*([a-z]-[a-z])?[a-z]*[!,.]?");
istringstream is(sentence);
string ss;
int cnt=0;
while(is>>ss){
if(regex_match(ss,pattern))cnt++;
}
return cnt;
}
};