Fix wxRegEx example in the documentation
Fix typos and make the code actually compile. Closes #17475.
This commit is contained in:
committed by
Vadim Zeitlin
parent
8baaa652ef
commit
1765794015
@@ -84,29 +84,39 @@ enum
|
||||
@library{wxbase}
|
||||
@category{data}
|
||||
|
||||
Examples:
|
||||
Example:
|
||||
|
||||
A bad example of processing some text containing email addresses (the example
|
||||
A (bad) example of processing some text containing email addresses (the example
|
||||
is bad because the real email addresses can have more complicated form than
|
||||
@c user@host.net):
|
||||
|
||||
@code
|
||||
wxString text;
|
||||
...
|
||||
wxRegEx reEmail = "([^@]+)@([[:alnum:].-_].)+([[:alnum:]]+)";
|
||||
if ( reEmail.Matches(text) )
|
||||
wxString originalText = "This is some text with foo@example.com and bar@example.com";
|
||||
|
||||
// Regex. to match an email address and extract its subparts.
|
||||
wxRegEx reEmail("([^@ -]+)@([[:alnum:]_]+).([[:alnum:]]{2,4})");
|
||||
|
||||
wxString processText = originalText;
|
||||
while ( reEmail.Matches(processText) )
|
||||
{
|
||||
wxString text = reEmail.GetMatch(email);
|
||||
wxString username = reEmail.GetMatch(email, 1);
|
||||
if ( reEmail.GetMatch(email, 3) == "com" ) // .com TLD?
|
||||
{
|
||||
...
|
||||
}
|
||||
// Find the size of the first match and print it.
|
||||
size_t start, len;
|
||||
reEmail.GetMatch(&start, &len, 0);
|
||||
std::cout << "Email: " << reEmail.GetMatch(processText, 0) << std::endl;
|
||||
|
||||
// Print the submatches.
|
||||
std::cout << "Name: " << reEmail.GetMatch(processText, 1) << std::endl;
|
||||
std::cout << "Domain: " << reEmail.GetMatch(processText, 2) << std::endl;
|
||||
std::cout << "TLD: " << reEmail.GetMatch(processText, 3) << std::endl;
|
||||
|
||||
// Process the remainder of the text if there is any.
|
||||
processText = processText.Mid (start + len);
|
||||
}
|
||||
|
||||
// or we could do this to hide the email address
|
||||
size_t count = reEmail.ReplaceAll(text, "HIDDEN@\\2\\3");
|
||||
printf("text now contains %u hidden addresses", count);
|
||||
// Or this will replace all names with "HIDDEN".
|
||||
size_t count = reEmail.ReplaceAll(&originalText, "HIDDEN@\\2.\\3");
|
||||
std::cout << "text now contains " << count << " hidden addresses" << std::endl;
|
||||
std::cout << originalText << std::endl;
|
||||
@endcode
|
||||
*/
|
||||
class wxRegEx
|
||||
|
Reference in New Issue
Block a user