// 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"(?m)[0-9]+:[0-9]+:?\s*(?:\[?warning\]?|\[?error\]?)|(?:::warning file=|::error file=)").unwrap();
let string = "PARSABLE
[yamllint] TEST FILES/yaml/yml_bad_1.yml - ERROR - 2 error(s)
--Error detail:
TEST FILES/yaml/yml_bad_1.yml:0:1: [warning] missing document start \"---\" (document-start)
TEST FILES/yaml/yml_bad_1.yml:11:16: error] syntax error: mapping values are not allowed here (syntax)
[yamllint] TEST FILES/yaml/yml_bad_2.yml - ERROR - 2 error(s)
--Error detail:
TEST FILES/yaml/yml_bad_2.yml:10:1: [warning] missing document start \"---\" (document-start)
TEST FILES/yaml/yml_bad_2.yml:11:1116: [error] syntax error: mapping values are not allowed here (syntax)
[yamllint] TEST FILES/yaml_schema/bad/action.yml - ERROR - 2 error(s)
--Error detail:
TEST FILES/yaml_schema/bad/action.yml:1:1: [warning] missing document start \"---\" (document-start)
TEST FILES/yaml_schema/bad/action.yml:2:1: [error] too many blank lines (1 > 0) (empty-lines)
COLORED
[Tap Reporter] Generated TAP report: /tmp/lint/megalinter-reports/tap/mega-linter-YAML_PRETTIER.tap
❌ Linted [YAML] files with [yamllint]: Found 6 error(s) - (1.36s)
- Using [yamllint v1.35.1] https://megalinter.io/All_Fixes_Together/descriptors/yaml_yamllint
- MegaLinter key: [YAML_YAMLLINT]
- Rules config: [/_Pipelines/LinterRules/.yamllint.yml]
- Number of files analyzed: [10]
[yamllint] TEST FILES/yaml/yml_bad_1.yml - ERROR - 2 error(s)
--Error detail:
TEST FILES/yaml/yml_bad_1.yml
10:1 warning missing document start \"---\" (document-start)
11:16 error syntax error: mapping values are not allowed here (syntax)
[yamllint] TEST FILES/yaml/yml_bad_2.yml - ERROR - 2 error(s)
--Error detail:
TEST FILES/yaml/yml_bad_2.yml
10:1 warning missing document start \"---\" (document-start)
11:16 error syntax error: mapping values are not allowed here (syntax)
STANDARD
❌ Linted [YAML] files with [yamllint]: Found 6 error(s) - (1.23s)
- Using [yamllint v1.35.1] https://megalinter.io/All_Fixes_Together/descriptors/yaml_yamllint
- MegaLinter key: [YAML_YAMLLINT]
- Rules config: [/_Pipelines/LinterRules/.yamllint.yml]
- Number of files analyzed: [10]
[yamllint] TEST FILES/yaml/yml_bad_1.yml - ERROR - 2 error(s)
--Error detail:
TEST FILES/yaml/yml_bad_1.yml
10:1 warning missing document start \"---\" (document-start)
11:16 error syntax error: mapping values are not allowed here (syntax)
[yamllint] TEST FILES/yaml/yml_bad_2.yml - ERROR - 2 error(s)
--Error detail:
TEST FILES/yaml/yml_bad_2.yml
10:1 warning missing document start \"---\" (document-start)
11:16 error syntax error: mapping values are not allowed here (syntax)
[yamllint] TEST FILES/yaml_schema/bad/action.yml - ERROR - 2 error(s)
--Error detail:
TEST FILES/yaml_schema/bad/action.yml
1:1 warning missing document start \"---\" (document-start)
2:1 error too many blank lines (1 > 0) (empty-lines)
❌ Linted [YAML] files with [yamllint]: Found 3 error(s) - (1.54s)
- Using [yamllint v1.35.1] https://megalinter.io/All_Fixes_Together/descriptors/yaml_yamllint
- MegaLinter key: [YAML_YAMLLINT]
- Rules config: [/_Pipelines/LinterRules/.yamllint.yml]
- Number of files analyzed: [10]
[yamllint] TEST FILES/yaml/yml_bad_1.yml - ERROR - 1 error(s)
--Error detail:
::group::TEST FILES/yaml/yml_bad_1.yml
::warning file=TEST FILES/yaml/yml_bad_1.yml,line=10,col=1::10:1 [document-start] missing document start \"---\"
::error file=TEST FILES/yaml/yml_bad_1.yml,line=11,col=16::11:16 syntax error: mapping values are not allowed here (syntax)
::endgroup::
[yamllint] TEST FILES/yaml/yml_bad_2.yml - ERROR - 1 error(s)
--Error detail:
::group::TEST FILES/yaml/yml_bad_2.yml
::warning file=TEST FILES/yaml/yml_bad_2.yml,line=10,col=1::10:1 [document-start] missing document start \"---\"
Warning: 1:1 [document-start] missing document start \"---\"
Warning: 13:14 [truthy] truthy value should be one of [false, true]
Warning: 17:14 [truthy] truthy value should be one of [false, true]
Warning: 21:14 [truthy] truthy value should be one of [false, true]
Warning: 25:14 [truthy] truthy value should be one of [false, true]
Warning: 37:14 [truthy] truthy value should be one of [false, true]
Warning: 56:2 [comments] missing starting space in comment
Warning: 57:2 [comments] missing starting space in comment
Warning: 58:2 [comments] missing starting space in comment
Warning: 59:2 [comments] missing starting space in comment
Warning: 60:2 [comments] missing starting space in comment
Error: 77:1 [empty-lines] too many blank lines (3 > 2)
Error: 86:1 [empty-lines] too many blank lines (4 > 2)";
// 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/