// include the latest version of the regex crate in your Cargo.toml
extern crate regex;
use regex::Regex;
fn main() {
let regex = Regex::new(r"(?mis)(?<!```html\s*)(<link href=.*?)(?=^\s*$)").unwrap();
let string = "
# PATTERNS
## Style Blocks (2 patterns)
- ***Matches:***
- All `<style> any code here </style> blocks that aren't preceded by ```css + any amount of optional whitespace
>> NOTES FOR THE FOLLOWING PATTERN:
• This requires the `regex` library, not Python's built-in-crap
• This requires the `Single Line` (regex101) or `regex.DOTALL` (Python regex) flag
### Pattern: Old version (would have replaced all punctuation with `punctuation` from the string library)
(?<!```css\\s*)(\\<style\\>[\\sa-z0-9\\-\\.\\[\\{\\]\\}:;#]+\\<\\/style\\>)
>> NOTES FOR THE FOLLOWING PATTERN:
• This requires the `regex` library, not Python's built-in-crap
• This requires the `Single Line` (regex101) or `regex.DOTALL` (Python regex) flag
### Pattern: Newest version (much better)
(?<!```css\\s*)(<style>.*?<\\/style>)
## This does the same thing but for `<!DOCTYPE html> any code here </html>`
>> NOTES FOR THE FOLLOWING PATTERN:
• This requires the `regex` library, not Python's built-in-crap
• This requires the `Single Line` (regex101) or `regex.DOTALL` (Python regex) flag
### Pattern:
(?<!```html\\s*)(<!DOCTYPE html>.*?<\\/html>)
## This matches all blocks of code containing `<link href=>` up to, but not including, an empty line
>> NOTES FOR THE FOLLOWING PATTERN:
• This requires the `regex` library, not Python's built-in-crap
• This requires the `Single Line` (regex101) or `regex.DOTALL` (Python regex) flag
### Pattern:
(?<!```html\\s*)(<link href=.*?)(?=^\\s*$)
<br>
(><)(><)(><)(><)(><)(><)(><)(><)(><)(><)(><)(><)(><)(><)(><)(><)(><)(><)(><)(><)(><)(><)(><)(><)(><)(><)(><)(><)(><)(><)(><)(><)
<br>
# TEST TEXT
<br>
<style>
.list-group-mine .list-group-item {
background-color: black;
color: white;
border-top: 1px solid #0091b5;
border-left-color: #fff;
border-right-color: #fff;
}
.list-group-mine .list-group-item:hover {
background-color: red;
}
</style>
```css
<style>
.list-group-mine .list-group-item {
background-color: black;
color: white;
border-top: 1px solid #0091b5;
border-left-color: #fff;
border-right-color: #fff;
}
.list-group-mine .list-group-item:hover {
background-color: red;
}
</style>
```
<link href=\"https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css\" rel=\"stylesheet\" integrity=\"sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u\" crossorigin=\"anonymous\">
<div class=\"list-group list-group-mine\">
<a class=\"list-group-item\" href=\"https://bit.ly/3SICqay\"><strong>Link to the SO Post</strong></a>
<a class=\"list-group-item\" href=\"/path\"><strong>Item 2</strong></a>
<a class=\"list-group-item\" href=\"/path\"><strong>Item 3</strong></a>
</div>
<br>
##### Before Bootstrap
<!DOCTYPE html>
<html lang=\"en\">
<head>
<title>TABLE</title>
</head>
<body>
<table>
<thead>
<tr>
<th>Name</th>
<th>Number</th>
</tr>
</thead>
<tbody>
<tr>
<td>Malachi</td>
<td>1-555-343-9867</td>
</tr>
<tr>
<td>Steve</td>
<td>1-555-734-8857</td>
</tr>
</tbody>
</table>
</body>
</html>
</br>
<code style=\"color: #f51686; font-weight: bold; font-size: 16pt;\"> The HTML </code>
```html
<!DOCTYPE html>
<html lang=\"en\">
<head>
<meta charset=\"UTF-8\" />
<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\" />
<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />
<title>CSS Images</title>
<link rel=\"stylesheet\" href=\"css/style.css\" />
</head>
<body>
<div class=\"container\">
<section class=\"hero\">
<figure class=\"profile-pic-figure\">
<img
src=\"img/profile-800x800.png\"
alt=\"profile\"
width=\"800\"
height=\"800\"
title=\"Profile Pic\"
/>
<figcaption class=\"offscreen\">Pookie Scrumptious</figcaption>
</figure>
<h1 class=\"h1\">
<span class=\"nowrap\">
Hello 👋
</span>
<span class=\"nowrap\">
I'm Pookie
</span>
</h1>
</section>
</div>
</body>
</html>
```
<br>
<code style=\"color: #f51686; font-weight: bold; font-size: 16pt;\"> The CSS</code>
";
// result will be an iterator over tuples containing the start and end indices for each match in the string
let result = regex.captures_iter(string);
for mat in result {
println!("{:?}", mat);
}
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Rust, please visit: https://docs.rs/regex/latest/regex/