re = /(?<!```html\s*)(<link href=.*?)(?=^\s*$)/mi
str = '
# 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>
'
# Print the match result
str.scan(re) do |match|
puts match.to_s
end
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 Ruby, please visit: http://ruby-doc.org/core-2.2.0/Regexp.html