我正在使用boost库进行正则表达式.
有什么用"!" 在Perl正则表达式中标记?
它表示什么?
不知何故,我没有找到,如何只将第一次出现或正则表达式放入字符串.我可以创建一个正则表达式对象:
static const boost::regex e("<(From )?([A-Za-z0-9_]+)>(.*?)");
Run Code Online (Sandbox Code Playgroud)
现在,我需要匹配([A-Za-z0-9_]+)到std::string,说playername.
std::string chat_input("<Darker> Hello");
std::string playername = e.some_match_method(chat_input, 1); //Get contents of the second (...)
Run Code Online (Sandbox Code Playgroud)
我错过了什么?
什么应该代替some_match_method和应该采取什么参数?
#include <fstream>
#include <string>
#include<string>
#include<boost/algorithm/string.hpp>
#include<boost/regex.hpp>
#include <boost/algorithm/string/trim.hpp>
using namespace std;
using namespace boost;
int main() {
string robotsfile="User-Agent: *"
"Disallow: /";
regex exrp( "^Disallow:(.*)$");
match_results<string::const_iterator> what;
if( regex_search( robotsfile, what, exrp ) )
{
string s( what[1].first, what[1].second );
cout<< s;
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我需要/从Disallow: /我的正则表达式错误中得到不允许的路径?
我正在尝试制作一个匹配的正则表达式:
((11 3) (96 15) (2 3) )
Run Code Online (Sandbox Code Playgroud)
到目前为止,我有:
([^(|^)| |[A-Za-z])+
Run Code Online (Sandbox Code Playgroud)
但它只捕获了11而不是其余的.字符串也长了很长时间我只使用了它的一小部分,所以它重复使用相同的格式但不同的数字.这就是我迄今为止至少有一部分程序:
regex expression("([^(|^)| |[A-Za-z])+");
string line2 = "((11 3) (96 15) (2 3) )";
if(regex_match(line2, expression))
cout << "yes";
else
cout << "no";
Run Code Online (Sandbox Code Playgroud) Boost引发异常.
An unhandled exception "0x000007fefd0aa88d" in the "svg.exe": Exception Microsoft C: boost :: exception_detail :: clone_impl <boost :: exception_detail :: error_info_injector <std::runtime_error>>
Run Code Online (Sandbox Code Playgroud)
用于正则表达式
opentag = [<] [s] [p] [a] [n]
closetag = [<] [/] [s] [p] [a] [n] [>]
/opentag+"(?>(?>(?!"+opentag+"|"+closetag+").) |(?R))*"+closetag/
Run Code Online (Sandbox Code Playgroud)
如果传入的字符串(std :: string)大小超过140 kb.
我需要将标签放在同一级别.
std :: string = "<span id=1> </ span>
<span id=2> <span> </ span> </ span>
<span id=3> <span> <span> <span> </ span> </ span> </ span> </ span> "
Run Code Online (Sandbox Code Playgroud)
三弦
0) <span id=1> </ …Run Code Online (Sandbox Code Playgroud) 我有一个处理许多空格分隔字符串的操作,我正在寻找一个字符串匹配函数的正则表达式,如果前两个字符串在第一个空格以大写字母开头之前将触发传递,如果不是,则返回false.
例子:
"AL_RIT_121 PA_YT_32 rit cell 22 pulse"
Run Code Online (Sandbox Code Playgroud)
将返回true,因为前两个字符串AL_RIT_121,并PA_YT_32用大写字母开头A,并P分别
"AL_RIT_252 pa_YT_21 mal cell reg 32 1 ri"
Run Code Online (Sandbox Code Playgroud)
将以p小写形式返回false .
我正在玩Boost :: regex,这是我第一次使用正则表达式和Boost,所以请原谅我,如果问题真的很愚蠢.
我得到一个NO_MATCH,其中包含以下值:
actual_name = "q\[0\]123"
user_name = "q[0]123"
Run Code Online (Sandbox Code Playgroud)
PS在调试器中,当我打印actual_name它时显示 - q\\[0\\]123.但是,当我执行actual_name.size()时,结果是9.
这是我的代码:
boost::regex regexpr( actual_name );
boost::match_results<pstring::const_iterator> what;
boost::regex_match(user_name, what, regexpr);
if(what[0].matched)
{
// Match found
}
else
{
// NO_match found
}
Run Code Online (Sandbox Code Playgroud)
我在Rubular.com上尝试了相同的组合,regular_expression = "q\[0\]123"并test-string = "q[0]123"在那里返回一个Complete_Match.
我错过了什么?