  Many data extraction tasks of practical relevance require not only syntactic
pattern matching but also semantic reasoning about the content of the
underlying text. While regular expressions are very well suited for tasks that
require only syntactic pattern matching, they fall short for data extraction
tasks that involve both a syntactic and semantic component. To address this
issue, we introduce semantic regexes, a generalization of regular expressions
that facilitates combined syntactic and semantic reasoning about textual data.
We also propose a novel learning algorithm that can synthesize semantic regexes
from a small number of positive and negative examples. Our proposed learning
algorithm uses a combination of neural sketch generation and compositional
type-directed synthesis for fast and effective generalization from a small
number of examples. We have implemented these ideas in a new tool called Smore
and evaluated it on representative data extraction tasks involving several
textual datasets. Our evaluation shows that semantic regexes can better support
complex data extraction tasks than standard regular expressions and that our
learning algorithm significantly outperforms existing tools, including
state-of-the-art neural networks and program synthesis tools.
